Post on 13-Aug-2020
1
Programação Orientada a Objetos
Objetos Classes Objetos Classes Objetos, Classes Objetos, Classes e Mensagense Mensagens
O Modelo de ObjetosObj t Cl
Reinaldo Gomesreinaldo@cefet-al.br
Objetos e ClassesMensagens e métodos
DecomposiçãoAnálise/projeto estruturado
Soluciona o problema decompondo-o funcionalmente Soluciona o problema decompondo o funcionalmente, isto é, criando um conjunto de procedimentos e utilizando a técnica de refinamentos sucessivos.
Análise/projeto orientado a objetosSoluciona o problema identificando as entidades(reais ou abstratas) presentes no problema e os
2
(reais ou abstratas) presentes no problema e os relacionamentos (estruturais ou funcionais) entre elas.A programação orientada a objetos usa uma linguagem orientada a objetos para implementar o projeto
2
DecomposiçãoQual a melhor forma de decompor um problema?
A decomposição funcional destaca a ordem dos A decomposição funcional destaca a ordem dos eventosA decomposição orientada a objetos enfatiza os agentes que causam ações ou as recebem
Esta questão já era discutida desde a Grécia antiga
3
antigaDemocritus ("mundo é um conjunto de coisas") Heraclitus ("mundo é um conjunto de processos")
A Evolução do Modelo de ObjetosLinguagens de programação:
Primeira geração (1954-1958)Primeira geração (1954 1958)• Aplicações científicas e matemáticas• Fortran I, Algol58, Flowmatic
Segunda geração (1959-1961)• Estrutura de blocos, compilação em separado• Fortran II Algol 60 Cobol Lisp
4
Fortran II, Algol 60, Cobol, LispTerceira geração (1962-1970)
• Invenção do transistor• PL/I, Pascal, Simula
3
A Evolução do Modelo de ObjetosO tipo do mecanismo de abstração usado por cada geração foi mudandogeração foi mudandoPrimeira geração:
Expressões e funções matemáticasSegunda geração:
Abstrações algorítmicas
5
gTerceira geração:
Abstrações de dados
A Evolução do Modelo de ObjetosTopologia da 1ª geração e início da 2ª:
Dados
6
Subprogramas
4
A Evolução do Modelo de ObjetosTopologia da 2ª geração e início da 3ª:
Dados
7
Subprogramas
A Evolução do Modelo de ObjetosTopologia no final da 3ª geração:
Módulos
Dados
8
Subprogramas
5
A Evolução do Modelo de ObjetosFinal da terceira geração
Subprogramas
DadosObjeto
9
Subprogramas
Princípios do Modelo de ObjetosParadigmas de programação:
Orientado a procedimento (procedimentos seqüência)Orientado a procedimento (procedimentos, seqüência)Orientado a objeto (abstração, lig. dinâmica e herança)Orientado a lógica (regras, padrões e inferência)Funcional (funções matemáticas)
Cada paradigma possui seu próprio conjunto de
10
princípios chaves
6
Conceitos do Modelo de Objetos
Classes ObjetosEncapsulamentoComposição
Instanciação
Abstração
Herança
Classes ObjetosEncapsulamento
Mensagem
Referência
11
ç
Ligação dinâmica
MétodoPolimorfismo
ObjetosPara o ser humano, um objeto é...
Algo tangível e/ou visívelAlgo tangível e/ou visívelAlgo que possa ser compreendido intelectualmenteAlgo para o qual um pensamento ou ação possa ser direcionado
Um objeto modela alguma parte da realidade e é l i t t
12
algo que existe no tempo e no espaçoUtilizamos o conceito de objetos para entender melhor o mundo que nos cerca
7
ObjetosPara um programador...
“Um objeto representa uma entidade unidade ou itemUm objeto representa uma entidade, unidade ou itemidentificável, individual, real ou abstrato, com um papelbem definido no domínio do problema.” [Booch, 91]
Objetos podem ser físicos:Bicicleta, máquina, pessoa, sensor, ...
O ã
13
Ou não:Reação química, número complexo, B-Tree
ObjetosDomínio do problema?
Escopo ou área em que o problema a ser resolvido Escopo ou área em que o problema a ser resolvido está inseridoExemplos:
• controle de tráfego aéreo, • consultórios médicos,• sistema bancário,
14
sistema bancário,• controle acadêmico
A solução computacional de um problema depende do entendimento do domínio onde ele se encontra
8
ObjetosNem tudo é um objeto...
Tempo métricas sensações e sentimentos humanos Tempo, métricas, sensações e sentimentos humanos não são, em geral, modelados como objetosEles são, em geral, tratados como propriedades de objetos
Descobrir quais entidades fazem parte do domínio do problema e identificar suas propriedades e
15
do problema e identificar suas propriedades e comportamentos é tarefa do programador e dos analistas de sistemas
ObjetosComo entidades do domínio do problema se transformam em objetos de software?
VeículonumLugares: intvelMax: floatmarca: StringkmRodado: int
transformam em objetos de software?Objeto real Modelo do objeto
Modelagem
Propriedades
16
kmRodado: intgetKmRodados(): intimprimaMarca(): voidsetNumLugares(int n)getVelMax(): float
Propriedades
Operações
9
Implementação
Objetos
Abstração do objetopublic class Veiculo {private int numLugares;private float velMax;private String marca;private int kmRodado;
public int getKmRodado() {
Implementação da abstração
Codificação
VeículonumLugares: intvelMax: floatmarca: StringkmRodado: int
tK R d d () i t
17
p g...
}...
}
getKmRodados(): intimprimaMarca(): voidsetNumLugares(int n)getVelMax(): float
O que é um objeto para a POO?
Objetos
Um objeto é um bloco de software que possui um estado e uma identidade e
para o qual podem ser solicitados serviços através de mensagens
18
“O estado de um objeto consiste de todas as propriedades do objeto mais os valoresatuais destas propriedades” [Booch, 91]
10
Características chaves de um objeto:Estado: conjunto de propriedades de um objeto e seus
Objetos
Estado: conjunto de propriedades de um objeto e seus respectivos valoresIdentidade: cada objeto criado é único e ocupa seu espaço próprio na memória (espaço onde ficam suas propriedades)Comportamento: conjunto de operações que o objeto
19
Comportamento: conjunto de operações que o objeto está apto a executar
Estado e comportamento:
Objetos
velMax: 112numLugares: 44
marca: MERCEDESkmRodados: 80.732
getKmRodado( )
etVelM
ax( )
imprimaMarca
Estado de um objeto
Comportamento de um objeto
Propriedades de um objeto
Valores de propriedades
20
ge a( )
setNumLugares( )
Um objeto veículo
Comportamento de um objeto
Métodos de objetos
11
Identidade: todo objeto criado ocupa seu próprio espaço na memória do computador
Objetos
espaço na memória do computador
velMax: 112numLugares: 44
marca: MERCEDESkmRodados: 80 732
getKmRodado( )
tVelM
ax( )
imprimaMar
velMax: 112numLugares: 44
marca: MERCEDESkmRodados: 80 732
getKmRodado( )
tVelM
ax( )
imprimaMar
21
kmRodados: 80.732
get rca( )
setNumLugares( )
Um objeto veículo "v1"
kmRodados: 80.732
get ca( )
setNumLugares( )
Outro objeto veículo "v2"
Como um objeto é criado?É criado por uma operação de instanciação sobre uma
Classes e instanciação
É criado por uma operação de instanciação sobre uma classe
O que é uma classe?É a unidade lógica de programação do paradigma OO onde são definidas as propriedades e métodos que uma categoria de objetos terá
22
uma categoria de objetos teráA classe é uma especie de "fôrma" a partir da qual objetos são criados, isto é, instanciados.Programar OO é, em grande parte do tempo, escrever classes!
12
Classes e instanciaçãoRepresentação gráfica de uma instanciação
Classe
velMax: 112
getKmRodado( )
x( )
imprim
Objeto
23
numLugares: 44
marca: MERCEDESkmRodados: 80.732
getV
elMax maMarca( )
setNumLugares( )
Definição de uma classe Veiculo em Java
Classes e instanciação
classe
propriedades
public class Veiculo {private int numLugares;private float velMax;private String marca;private int kmRodado;
public int getKmRodado() {
24
métodos
Uma classe em Java é gravada num arquivo
public int getKmRodado() {...
}...
}
13
Instanciação de objetos de uma classe
Classes e instanciação
public class AppExemplo {
public static void main(String[] args){Veiculo v1, v2;
v1 = new Veiculo();v2 new Veiculo();
operador de instanciaçãoreferência para objeto
25
v2 = new Veiculo();v1.setNumLugares(20);v2.setNumLugares(30);
}}
envio de mensagem
Referências para objetosA maioria dos objetos em um programa Java são acessados por variáveis chamadas referênciasacessados por variáveis chamadas referências
Como Java é fortemente tipada, estas variáveis devem ser declaradas e tipificadas em tempo de compilaçãoExemplos:
String s; //s é do tipo String
26
String s; //s é do tipo StringVeiculo v; //v é do tipo VeiculoTriangulo t; //t é um Triângulo
14
Referências para objetosA declaração indica o tipo de uma referência
Veiculo v; //declaraçãov = new Veiculo(); //instanciaçãov.setNumLugares(50); //usov = null; //desprezo
27
Referências para objetosA declaração indica o tipo de uma referência
Veiculo v; //declaraçãov = new Veiculo(); //instanciaçãov.setNumLugares(50); //usov = null; //desprezo
28
v
15
Referências para objetosA instanciação cria o objeto na memória
Veiculo v; //declaraçãov = new Veiculo(); //instanciaçãov.setNumLugares(50); //usov = null; //desprezo
29
v0
Referências para objetosUma mensagem é enviada ao objeto
Veiculo v; //declaraçãov = new Veiculo(); //instanciaçãov.setNumLugares(50); //usov = null; //desprezo
30
v0
setNumLugares(50)
16
Referências para objetosE faz o método correspondente ser executado!
Veiculo v; //declaraçãov = new Veiculo(); //instanciaçãov.setNumLugares(50); //usov = null; //desprezo
31
v50
Referências para objetosA referência pode deixar de apontar para o objeto
Veiculo v; //declaraçãov = new Veiculo(); //instanciaçãov.setNumLugares(50); //usov = null; //desprezo
objeto sem referência!
32
v50
objeto sem referência!
17
Que entidade do domínio do problema essa classe representa?
Classes
representa?public class AppExemplo {
public static void main(String[] args){Veiculo v1, v2;
v1 = new Veiculo();
33
v1 new Veiculo();v2 = new Veiculo();v1.setNumLugares(20);v2.setNumLugares(30);
}}
Resposta:Ela representa um programa ou aplicação!
Classes
Ela representa um programa ou aplicação!Java é uma linguagem "quase"-puramente orientada a objetos
Quase tudo em Java é um objeto, até mesmo sistemas inteiros devem ser vistos como objetos
34
Implicação disso: é preciso escrever uma classe para se implementar um sistemaClasses que representam sistemas são chamadas de classe de aplicação
18
Mensagens e métodosUm método é a implementação de uma operação que um objeto é capaz de executarque um objeto é capaz de executarO conjunto de métodos de um objeto faz parte do comportamento deste objeto (ou interface)Métodos são codificados dentro da classe do objeto e seguem as regras sintáticas da linguagem
35
Métodos podem receber parâmetros e retornar valores
Um método é semelhante a um subprograma
Mensagens e métodosObjetos existem para prestar serviços para outros objetosobjetos
Um sistema orientado a objetos consiste de um conjunto de objetos comunicantes, que cooperam para a solução de um problema computacionalImagine um objeto como um computador
A forma de solicitar um serviço a um objeto é
36
A forma de solicitar um serviço a um objeto é enviando-lhe uma mensagem
O envio de uma mensagem a um objeto faz o método correspondente ser executado
19
Mensagens e métodosCompare:
Paradigma OO Paradigma EstruturadoDeclaração de métodos em classes
Declaração de funções ou procedimentos em módulos
Envio de uma mensagem para um objeto
Chamada de uma função ou procedimento num outro
37
para um objeto procedimento num outro ponto do código
Mensagens e métodosForma de um método:
Todo método em Java possui um cabeçalho Todo método em Java possui um cabeçalho consistindo dos seguintes elementos:
• Modificadores (visibilidade, escopo, etc)• Tipo de retorno• Nome do método• Parâmetros
38
• Exceções lançadasPossui também um corpo delimitado por { e } onde ficam os comandos e declarações de variáveis locais
20
Mensagens e métodosExemplo de um método:public class AppExemplo {public class AppExemplo {
public static void main(String[] args){Veiculo v1, v2;
v1 = new Veiculo();
nomemodificadores tipo parâmetro
variáveis locais
39
v1 new Veiculo();v2 = new Veiculo();v1.setNumLugares(20);v2.setNumLugares(30);
}}
comandos
Ciclo de vida de um objetoLinha da vida de um objeto:
Instanciação: o objeto é criado e passa a ser 1 Instanciação: o objeto é criado e passa a ser referenciado por um nome (referência);Uso: o objeto recebe mensagens de outros objetos e, com isso, executa parte da funcionalidade do sistema;Destruição: A área de memória ocupada pelo objeto é reclamada; todas as referências para o objeto ficam
1
2
3
40
reclamada; todas as referências para o objeto ficam nulas.
21
Ciclo de vida de um objetoExemplo com um código Java:
Quadrado q;Quadrado q;
q = new Quadrado();
q.movaDireita(10);q.mudeTamanho(20);q.fiqueVisivel();
1
2
41
q.fiqueVisivel();q.mudeCor("red");
q = null;3
Um Ambiente de Desenvolvimento BlueJ
Desenvolvido por um grupo de pesquisadores da p g p p qMonash University e da University of Southern DenmarkTotalmente escrito em JavaInterface amigável e de fácil aprendizadoEditor, compilador, máquina virtual e depurador i t d bi t
42
integrados no mesmo ambienteVisão gráfica da estrutura de classes Visão da definição das classes em Java e Javadoc
22
Um Ambiente de DesenvolvimentoBlueJ
Criação e visualização interativa de objetos Criação e visualização interativa de objetos Chamada interativa de métodos de objetos e métodos de classes Teste interativo das aplicações Desenvolvimento incremental de aplicações N t ã d l bj t b d UML
43
Notação das classes e objetos baseados na UML Produto freeware, disponível para download em www.bluej.org/download/download.html
Um Ambiente de Desenvolvimento
44
23
Aula Prática 1Objetivos
Conhecer a ferramenta BlueJConhecer a ferramenta BlueJPraticar a criação de instâncias de objetosPraticar o envio de mensagens para objetos
Ferramentas utilizadasBlueJ (http://www.bluej.org)
45
Bibliografia[1] Booch, G. Object Oriented Design. 1991.[2] Hostetter C Survey of Objected Oriented [2] Hostetter , C. Survey of Objected Oriented Programming Languages. Disponível em:http://www.rescomp.berkeley.edu/~hossman/cs263/paper.html.
[3] Sebesta, R. Conceitos de Linguagens de Programação.4a. edição. Bookman. 1999.
46
24
BibliografiaOutros sites sobre o assunto:
http://www campusprogram com/reference/en/wikipediahttp://www.campusprogram.com/reference/en/wikipedia/o/ob/object_oriented_programming_1.htmlhttp://en.wikipedia.org/wiki/Object-oriented_programminghttp://jeffsutherland.com/papers/Rans/OOlanguages.pdfhttp://www princeton edu/~ehuang/OOP/index html
47
http://www.princeton.edu/~ehuang/OOP/index.htmlVídeo com palestra de Alan Kay. "The Computer Revolution Hasn't Happend Yet". Disponível em:http://www.educause.edu/conference/e98/webcast98.html
Programação Orientada a Objetos
Objetos Classes Objetos Classes Objetos, Classes Objetos, Classes e Mensagense Mensagens
O Modelo de ObjetosObj t Cl
Reinaldo Gomesreinaldo@cefet-al.br
Objetos e ClassesMensagens e métodos