Orientação
a
Objetos
Francisco José A. C. Souza
Franzé
francisceioseph@gmail.com
@francisceioseph
Diretor Geral do Project Mark
Márcio de Paula Monte
Marcinho
marciodepaula133@gmail.com
Gerente de Projetos do Project Mark
this.esquema
40 + 20 horas 2 horas/aula
Exposições Práticas
Trabalho feito aos pares
Desafios Recompensas
presença [10]
trabalhos [50]
desafios [80]
apresentações [80]
Certificado self learning
this.tópicos
Orientação a Objetos
abstração
objetos
classes
Linguagem Java
OO em Java
mecanismos de Java
estruturas básicas
classes básicas
interface gráfica
Boas Práticas
nomenclatura
centralização
reutilização
Outras…
this.história
computação
http://goo.gl/WfQc87
Gottfried Wilhelm
Leibniz
[1646 - 1716]
“se fosse escolher na História
da Ciência um patrono para a
Cibernética, elegeria Leibniz”
Norbert Wiener
Blaise Pascal
[1623 - 1662]
“o pensamento é a nossa
dignidade, tratemos, pois, de
pensar bem, pois aí está todo
princípio moral”
Blaise Pascal
Charles Babbage
[1792 - 1871]
“tão pronto exista a máquina
analítica, esta
necessariamente guiará o
curso futuro da ciência.”
Charles Babbage
Ada Lovelace
[1815 - 1852]
“[O seus escritos] mostram
como ela teve uma total
compreensão dos princípios de
um computador programado,
um século antes do tempo
deste”
B. H. Newman
George Boole
[1815 - 1864]
Pai da sistematização da
lógica matemática
Herman Hollerith
[1860 - 1929]
Fundador da IBM
John Von
Neumann
[1903 - 1957]
Criador da atual arquitetura de
computadores dos PCs
Alan Methinson
Turing
[1912 - 1954]
“só podemos visualizar uma
pequena parcela do futuro,
mas o suficiente para saber
que ainda há muito o que
fazer.”
Alan Turing
Grace Murray
Hooper
[1906 - 1994]
Construtora do primeiro
compilador [linguagem A-0]
George Stibitz
[1904 - 1995]
Construtor do ILLIAC IV [64
processadores]
Construtor do computador
baseado em relês
John Backus
[1924 - 2007]
“Na ciência e em todo
trabalho de criação nós
falhamos repetidas vezes.
Normalmente para cada ideia
bem sucedida há dúzias de
outras que não funcionaram”
TRAN
Henry Edwards
Roberts
[1941 - 2010]
Pai da computação pessoal
Dennis
MacAlistair Richie
[1941 - 2011]
Pai da Linguagem C e de
todos os sistemas UNIX
Willian Henry
Gates III
[1955]
Criador do Windows e da
Microsoft
Steaven Paul Jobs
[1955 - 2011]
Fundador da Apple Computing
this.linguagens
KEEP IT
SIMPLE
Um método
padronizado
para comunicar
instruções a
um computador
[sintaxe]
[semântica]
[programa]
+
why?
Hello!
0100100001
1001010110
1100011011
0001101111
00100001
“[Naquela época] a frase
mais frequente que nós
ouvíamos era que a única
maneira de se programar
em um computador era
em octal”
Grace Murray Hooper
Java
C
C++
Obj. C
C#
Python
JavaScript
VB .NET
maior
capacidade
de expressar
ideias
maior
embasamento
para escolher
uma
linguagem
adequada
??????????
novas
linguagens se
tornam mais
fáceis de
aprender
entender
melhor a
importância da
implementação
visão global do
avanço da
computação
when and
why?
geral
{C
Java
VB
Python
Ruby
Pascal
específico
{HTML
Bash
Bugs
CSS
APT
ANT
where ?
Ciência
Comércio
IA
SO
Scripting
Simulação
…
timeline
linguagens
de
máquina
1000101010
I
assembly
STA #32
LDA #44
ADD #88
STA #33
HLT
II
procedimental
III foca-se em como fazer
algo.
Java
C
Python
C#
…
aplicativas
foco no que deve ser
feitoIV SQL
FOCUS
Ramis
S
Gauss
funcionais
& lógicas
V prolog
f-logic
lisp
haskell
redes neurais
modelo computacional
inspirado no sistema
nervoso humano.
VI
how?
compilação
1000101010
I todo o código-fonte é
traduzido, de uma vez,
para código de máquina
a fim de ser executado.
compilação
I
código fonte
análise léxica
análise sintática
otimização
geração de objeto
linkagem
Atualmente, o código
executável utiliza
funcionalidades do
sistema operacional
subjacente.
código executável
compilação
I rapidez de execução
não distribui código-
fonte
demora em compilar
correções requerem
recompilações
otimização
detecção de erros
compilação
I C
FORTRAN
Ada
Obejctive-C
Pascal
Delphi
Visual Basic
Eiffel
interpretação
II
1000101010
O código-fonte é
traduzido para
comandos de máquina
linha por linha, a
medida que é
executado.
1000101010a = 34
b = 30
print a+b
a = 34
b = 30
print a+b
1010111000
a = 34
b = 30
print a+b 1010111000
interpretação
II Mais fácil debugar
distribui código-fonte
execução lenta
detecção de erros difícil
boa para internet
correção rápida
interpretação
II Python
JavaScript
Bash Ruby
php
ActionScript
híbrido
III
1000101010
Compilação + Interpretação
geração de código
intermediário que será
interpretado por uma
máquina virtual
híbrido
lw 888
st $777
ft5:
add 6,7
sub 4,1
hlt
III
híbrido
III lw 888
st $777
ft5:
add 6,7
sub 4,1
hlt
100001
híbrido
III lw 888
st $777
ft5:
add 6,7
sub 4,1
hlt
110010
híbrido
III lw 888
st $777
ft5:
add 6,7
sub 4,1
hlt
000101
híbrido
III lw 888
st $777
ft5:
add 6,7
sub 4,1
hlt
111110
híbrido
III “multiplataforma"
distribuição de
bytecodes
execução lenta
uso de VMs
otimização
detecção de erros não acesso ao fonte
híbrido
III Java
Perl
this.paradigmas
sequencial
I código disposto
sequencialmente
poucas estruturas de
controle
uso abusivo de goto
código spaghetti
BASIC
estruturado
II código organizado
de acordo com as suas
funcionalidades
C, Pascal, B, Algol
definição de novos
tipos de dados
orientado
a objetos
III código abstraído em
termos de objeto
objeto = dados +
funcionalidades
C++, Java, C#, Swift
funcional
lógico
orientado
a eventos

Java Aula 01