Tpicos da Aula
Conceitos fundamentais de software Programao orientada a objetos e reutilizao de software Um pouco da histria de Java Tecnologia Java
O que software?
Programa de computador + Documentao Classificao fundamental
Produtos genricos (ex. MS Office) Produtos encomendados (ex. Locadora do Z)
Resultado (software)
Custos altos, projetos atrasados, sistemas no confiveis, desempenho insatisfatrio, etc...
Disciplina : Programao Orientada a Objetos
Professor Otaviano Silvrio
www.otaviano.sil.inf.br
Sistemas Crticos
Equipamentos mdicos
Extremamente crticos Lidam com vidas
Caixas eletrnicos
Prejuzos financeiros
Confiabilidade de Software
Preo e Desempenho
Pouco espao na memria Grande variao em caractersticas de aparelhos
Celular
10
Analogia Biolgica
Cada clula interagiria com outras clulas atravs do envio de mensagens para realizar um objetivo comum. Adicionalmente, cada clula se comportaria como uma unidade autnoma.
Analogia Biolgica
De uma forma mais geral, Kay pensou em como construir um sistema de software a partir de agentes autnomos que interagem entre si. Com isso, ele estabeleceu os princpios da orientao a objetos.
10
Objeto
Definio:
Um conceito, uma abstrao com significado especfico em um contexto
Propsito:
Entidade de software que reflete de alguma forma o mundo real Representar uma entidade do mundo real
Objetos possuem:
Identidade Conjunto de caractersticas que determinam seu estado Comportamento especfico definido por um conjunto de aes
Abstrao
Uma abstrao qualquer modelo que inclui os aspectos relevantes de alguma coisa, ao mesmo tempo em que ignora os menos importantes.
11
Exemplos
Beija-Flor
Identidade: o beija-flor que vem ao meu jardim Caractersticas:
voar piar
Exemplo
Pessoa
Identidade: Mrio Caractersticas:
12
Exemplo
Telefone
Identidade:: nmero 2576-0989 Caractersticas:
tocar discar
Exemplo
nibus
Identidade: placa LXY 7684 Caractersticas:
13
Objeto
Representao
Identidade Caractersticas (estado)
Comportamento
Objeto
Implementao
Interface Visvel
Conjunto de operaes
14
Encapsulamento
Na terminologia da orientao a objetos, dizse que um objeto possui uma interface. A interface de um objeto o que ele conhece e o que ele sabe fazer, sem descrever como o objeto conhece ou faz. A interface de um objeto define os servios que ele pode realizar e conseqentemente as mensagens que ele recebe.
Disciplina : Programao Orientada a Objetos
Professor Otaviano Silvrio
www.otaviano.sil.inf.br
15
Encapsulamento
Uma interface pode ter vrias formas de implementao. Mas, pelo Princpio do Encapsulamento, a implementao de um servio no objeto servidor no importa para o objeto cliente. (O cliente confia em interfaces e no em implementaes)
Disciplina : Programao Orientada a Objetos
Professor Otaviano Silvrio
www.otaviano.sil.inf.br
Encapsulamento
16
Objetos e Mtodos
Um objeto composto por um conjunto de dados privados um conjunto de mtodos que atuam sobre estes dados.
Objetos e Mtodos
Mtodos
Todos os elementos do sistema so representados por objetos que podem ser gerados um nmero arbitrrio de vezes durante a execuo do programa.
17
Mtodos e Objetos
Em um programa, a declarao de um novo objeto deve ser constituda dos seus dados privados e de seus mtodos; Mtodos:
Interface: interface descreve a parte visvel do mtodo, seu nome, tipos de parmetros, e valor de retorno. Implementao: implementao contm o cdigo efetivo para operao, inclusive chamadas a outros mtodos do objeto.
Mtodos e Objetos
Exemplo
Crculo X, Y, Raio
18
Mtodos e Objetos
Como seria a interface do mtodo CalculaArea? Como seria sua implementao?
19
CLASSIFICAO
Classe
Definio:
Abstraes utilizadas para representar um conjunto de objetos com caractersticas e comportamento idnticos
Uma classe pode ser vista como uma fbrica de objetos Tecnicamente falando, objetos so instncias em tempo de execuo de uma classe
Todos os objetos so instncias de alguma classe Todos os objetos de uma classe so idnticos no que diz respeito a sua interface e implementao (o que difere um objeto de outro seu estado e sua identidade)
Disciplina : Programao Orientada a Objetos
Professor Otaviano Silvrio
www.otaviano.sil.inf.br
20
Exemplo
classe
cor das penas: azuis formato do bico: fino velocidade de vo: rpida
(objeto)
Comportamento:
voar piar
Disciplina : Programao Orientada a Objetos
Professor Otaviano Silvrio
www.otaviano.sil.inf.br
Exemplo
classe
cor das penas: cinza formato do bico: curto velocidade de vo: mdia
Comportamento:
voar piar
Disciplina : Programao Orientada a Objetos
Professor Otaviano Silvrio
www.otaviano.sil.inf.br
21
22
45/59
46/59
23
Smaltalk
Borland
Pascal objects
Delphi
| 1970
|
1975
| 1980
|
1985
| 1990
|
1995
| 2000 Microsoft
Sun
C#
C++
AT&T Bell Orientao a objetos
ANSI C++
Anlise orientada a objetos Anlise Estruturada |
ISO C++
UML
24
C# 2001 Microsoft
Fonte: Montenegro, F.
tentativas frustradas:
influncia da Web:
- 1994 - HotJava utilizando as funcionalidades adicionais de Java (independncia de plataforma, confiabilidade, segurana, proc. tempo real, etc.) - 1995 - Netscape Navigator 2.0 compatvel com Java 1.0
25
26
Portabilidade do cdigo; Possibilidade de programas executarem mais de uma tarefa (multithreading); Verificao automtica de cdigo carregado para garantir a segurana (ex: applets acessando disco); Programao centrada na rede. Substituio de herana mltipla por interface Arrays verdadeiros + ausncia de aritmtica de ponteiro
Disciplina : Programao Orientada a Objetos
Professor Otaviano Silvrio
www.otaviano.sil.inf.br
53/59
Conceito do JAVA
J2EE
um conjunto de tecnologias que fornecem APIs e um ambiente para desenvolvimento e execuo de aplicaes coorporativas.
J2SE
Contm as classes principais da plataforma Java, e chamado s vezes de Core Java Plataform.
J2ME
o Java para pequenos dispositivos, desde palms at celulares.
54/59
27
56/59
28
57/59
O formato do cdigo da MVJ se d por byte codes compactos e eficientes. A maioria da checagem de tipo feita em tempo de compilao.
58/59
29
59/59
60/59
30
Viso Geral
Fase 1 Editor Fase 2 Compilador Disco Fase 3 Carregador de Classes
Memria Principal
Disco
O programa criado no editor e armazenado em disco. O compilador cria bytecodes e os armazena em disco.
Viso Geral
Fase 4 Verificador de bytecodes
Memria Principal
. . .
O verificador de bytecodes confirma que todos os bytecodes so vlidos e no violam restries de segurana do Java
Fase 5
Intepretador
Memria Principal
. .
O interpretador l os bytecodes e os traduz para uma linguagem que o computador pode entender, possivelmente armazenando valores dos dados enquanto executa o programa.
Professor Otaviano Silvrio
www.otaviano.sil.inf.br
31
DE PROCEDIMENTAL PARA OO
Disciplina : Programao Orientada a Objetos
Professor Otaviano Silvrio
www.otaviano.sil.inf.br
Programao Procedimental
#define MAXCLIENTES 10
Definio de Constantes
32
Programao Procedimental
#define #define MAXCLIENTES MAXCLIENTES 10 10 typedef struct { char *nome; char *endereco; } Cliente;
Definio de Tipos
Programao Procedimental
#define #define MAXCLIENTES MAXCLIENTES 10 10 typedef struct { char *nome; char *endereco; } Cliente; Cliente *meusClientes[MAXCLIENTES]; // Cliente meusClientes[MAXCLIENTES]; // Cliente **meusClientes;
33
Programao Procedimental
#define #define MAXCLIENTES MAXCLIENTES 10 10 typedef struct { char *nome; char *endereco; } Cliente; Cliente *meusClientes[MAXCLIENTES]; // Cliente meusClientes[MAXCLIENTES]; // Cliente **meusClientes;
Cliente* criarCliente() { ... } void criarClientes () { ... for (...) { ... criarCliente(); } }
Definio de funes
Programao Procedimental
#define #define MAXCLIENTES MAXCLIENTES 10 10 typedef struct { char *nome; char *endereco; } Cliente; Cliente *meusClientes[MAXCLIENTES]; // Cliente meusClientes[MAXCLIENTES]; // Cliente **meusClientes;
Cliente* criarCliente() { ... } void criarClientes () { ... for (...) { ... criarCliente(); } } int main () { ... criarClientes(); Disciplina } : Programao Orientada a Objetos
34
Programao Procedimental
Estrutura do Programa
#define MAXCLIENTES 10 typedef struct { char *nome; char *endereco; } Cliente;
Cliente* criarCliente() { ... } void criarClientes () { ... for (...) { ... criarCliente(); } } int main () { ... criarClientes(); Disciplina : Programao Orientada a Objetos }
Definio de funes
35
Programao OO
public class Cliente { String nome; String endereco; public Cliente (String n, String e) { nome = n ; endereco = e; } } public class Clientes { static final MAX = 10; Cliente vetorClientes[] = new Cliente[MAX]; public Clientes () { ... for (...) { ... new Cliente(); } } public class Teste { public static void main (String args) { Clientes meusClientes = new Clientes(); } : Programao Orientada a Objetos Disciplina }
Definio de Classe
Definio de Classe
Definio de Classe
36
CLASSE - Exemplo
CLASSE - Exemplo
37
Exemplo
classe
tocar discar
Disciplina : Programao Orientada a Objetos
Professor Otaviano Silvrio
www.otaviano.sil.inf.br
Exemplo
classe
tocar discar
Disciplina : Programao Orientada a Objetos
Professor Otaviano Silvrio
www.otaviano.sil.inf.br
38