24
1 Programação Orientada a Objetos Objetos Classes Objetos Classes Objetos, Classes Objetos, Classes e Mensagens e Mensagens O Modelo de Objetos Obj t Cl Reinaldo Gomes [email protected] Objetos e Classes Mensagens e métodos Decomposição Aná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 objetos Soluciona 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

Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

1

Programação Orientada a Objetos

Objetos Classes Objetos Classes Objetos, Classes Objetos, Classes e Mensagense Mensagens

O Modelo de ObjetosObj t Cl

Reinaldo [email protected]

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

Page 2: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 3: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 4: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 5: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 6: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 7: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 8: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 9: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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]

Page 10: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 11: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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!

Page 12: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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() {...

}...

}

Page 13: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 14: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 15: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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)

Page 16: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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!

Page 17: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 18: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 19: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 20: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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.

Page 21: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 22: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 23: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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

Page 24: Objetos Classes Objetos, Classes e Mensagens · 2009-03-04 · 1 Programação Orientada a Objetos Objetos Classes Objetos, Classes e Mensagens O Modelo de Objetos Obj t Cl Reinaldo

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 [email protected]

Objetos e ClassesMensagens e métodos