Anda di halaman 1dari 30

Objetos (I)

ao entidades que encapsulam informa c ao Objetos s de estado ou dados, e um conjunto de opera c oes associadas que manipulam esses dados O estado de um objeto e completamente escondido e protegido de outros objetos, e a u nica maneira de examin a-lo e atrav es da invoca c ao de uma opera c ao declarada na interface p ublica do objeto Objetos t em uma identidade u nica. Identidade e a propriedade de um objeto que o disting ue de outros objetos

Objetos (II)

Objetos (III)
I n t e r f a c e

Mtodos

Dados

Em resumo, um objeto tem um estado, um comportamento (behaviour) bem denido, e uma identidade que eu nica

Opera c oes vs. M etodos

Operao

Operao

Mtodo Valores dos Atributos Mtodo

Mtodo

Mtodo

Operao

Operao

Classes (I)
e a descri c ao de um molde (skeleton) Uma classe que especica os atributos (ou propriedades) e o comportamento para um conjunto de objetos similares Todo objeto e inst ancia de uma classe Atributos e opera c oes s ao partes da deni c ao de uma classe Atributos s ao propriedades nomeadas de um objeto que armazenam o estado abstrato de cada objeto Opera c oes caracterizam o comportamento de um objeto, e s ao o u nico meio para acessar, manipular e modicar os atributos de um objeto

Classes (II)

Classes (III)
Um objeto comunica-se com outro atrav es de mensagens que identicam opera c oes a serem realizadas no segundo objeto Um objeto responde a uma mensagem mudando possivelmente os valores de seus atributos e/ou retornando um resultado A interface de uma classe compreende o conjunto de opera c oes que podem ser chamadas por outros objetos A vis ao externa de um objeto n ao e nada mais do que a sua interface p ublica

Classes (IV)
M etodos s ao implementa c oes de opera c oes que um cliente pode chamar num determinado objeto Opera c ao e diferente de m etodo. Opera c ao e abstrata. M etodo e concreto.

Dicas e Recomenda co es (I)


De acordo com o conceito de TAD, uma classe deve denir um conjunto de atributos com visibilidade privada (nunca p ublica) A interface p ublica da classe e formada pelo conjunto de opera c oes com visibilidade p ublica. A classe pode conter opera c oes com visibilidade privada.

Dicas e Recomenda co es (II)


Uma classe e considerada bem estruturada quando: 1. Proporciona uma abstra c ao bem denida de um elemento oriundo do vocabul ario do dom nio do problema ou da solu c ao. formada por um conjunto pequeno e bem denido 2. E de responsabilidades que devem ser cumpridas pela classe. 3. Proporciona uma separa c ao clara entre a especica c ao da abstra c ao e a sua implementa c ao. simples e f 4. E acil de entender, e ao mesmo tempo tem capacidade de extens ao e adapta c ao.

Exemplo de Classe em UML


Nome da Classe

Documento ATRIBUTOS: Visibilidade privada () autor :String dataDeChegada :int << create >> + Documento ():Documento + criarDocumento (s:String ,i:int ):void + imprimir ():void + editar ():void

OPERAES: Visibilidade pblica (+)

Cria c ao de Objetos do tipo Documento(II)

Varivel

Tipo de Varivel referncia para um objeto do tipo Documento

Tipo de Objeto

d1

objeto do tipo Documento

Classica c ao/Instancia c ao (I)


classe Usuario nome :String codigo :String + verificarCodigo (cod :String ):boolean

Classificao

Instanciao

<< instance_of >>

(os objetos depen dem da classe)

<<. instance_of >> maria:Usuario objeto

joao:Usuario objeto

OBS.: No contexto de um sistema de controle de bibliotecas

Um objeto e inst ancia de apenas uma classe Uma classe pode possuir v arias inst ancias (objetos)

Classica c ao/Instancia c ao (II)

Agrega c ao/Decomposi c ao (I)


Biblioteca identificador :String endereco :String + listarPublicacoes ():void + listarUsuarios ():void

Usuario nome :String codigo :String + verificarCodigo (cod :String ):boolean

Publicacao numeroTombo :String nome :String + reservar ():void

Agregao

Decomposio

Agrega c ao e um relacionamento estrutural entre o todo e suas partes. Ela implementa o conceito de decomposi c ao hier arquica: e-parte-de um mecanismo que permite a montagem do todo a partir de E suas partes

Associa c ao (I)
Usuario nome :String codigo :String + verificarCodigo (cod :String ):boolean 1 efetua * Reserva codigo :String dataInicio :Date dataFim :Date + efetuar ():void + cancelar ():void

Uma associa c ao e um relacionamento estrutural que descreve um conjunto de links; Agrega c ao e um tipo especial de associa c ao; Um usu ario pode efetuar v arias reservas e uma reserva e feita por apenas um usu ario.

Heran ca Simples

Heran ca Simples
ca (ou subclassing) e um mecanismo para de Heran rivar novas classes a partir de classes existentes atrav es de um processo de renamento Uma classe derivada herda a representa c ao de dados e opera c oes de sua classe base, mas pode: 1. Adicionar novas opera c oes e estender a representa c ao
de dados

2. Redenir a implementa c ao de opera c oes existentes Uma superclasse (ou classe base) proporciona a funcionalidade que e comum a todas as subclasses (ou classes derivadas), enquanto que uma subclasse proporciona a funcionalidade adicional que especializa o seu comportamento.

Generaliza c ao/Especializa c ao (I)


Classe base Usuario nome :String codigo :String + verificarCodigo (cod :String ):boolean

Generalizao Especializao
Aluno anoEscolar :int + suspender ():void Classe derivada Professor tempoServico :int + aposentar ():void Classe derivada

Implementa o conceito de heran ca de tipos: e-um-tipo-de Permite que todas as inst ancias de uma categoria espec ca sejam tamb em consideradas inst ancias de uma categoria mais abrangente

Generaliza c ao/Especializa c ao (III)

Exemplo de Heran ca
Documento autor :String dataDeChegada :Date << create >> + Documento ():Documento + imprimir ():void + editar ():void

Carta transporte :String << create >> + Carta ():Carta + anexar ():void hora :Time

Telegrama

<< create >> + Telegrama ():Telegrama + registrar ():void + pagar ():void

executa "super()", que equivale a "Documento()"

Instancia c ao de um Objeto
Documento

Carta << . instance_of >> c1:Carta Estado do objeto "c1" autor = "Joana" :String dataDeChegada = 05/10/2006 transporte = "Areo" :String + Carta ():Carta + imprimir ():void + editar ():void + anexar ():void :Date

Interface pblica do objeto "c1"

Deni c ao de Tipos
c ao de um objeto do tipo Documento: Cria
Documento

Documento c1 = . << newinstance_of Documento(); >>


d1:Documento Carta autor = Marcos :String dataDeChegada= 25/01/2006 + Documento ():Documento + imprimir ():void + editar ():void :Date

Exemplo de Heran ca
ContaBancaria # saldo :double << create >> + ContaBancaria (sal:double ):ContaBancaria + devolverSaldo ():double + creditar (valor :double ):void + debitar (valor :double ):void

ContaDePoup indice :double << create >> + ContaDePoup (sal:double ,ind :double ):ContaDePoup + render ():void

Os Modicadores de Visibilidade (I)


ublica: qualquer categoria de cliente pode acessar, P manipular e invocar diretamente atributos e m etodos declarados como public Privada: qualquer categoria cliente n ao pode acessar, manipular e invocar diretamente atributos e m etodos declarados como private. Somente a pr opria classe que os declara tem acesso direto

Os Modicadores de Visibilidade (II)


Vis vel pela subclasse (protegida): se um atributo ou m etodo e protegido, somente os clientes por heran ca t em acesso a ele. Os clientes por instancia c ao continuam a enxergar somente os atributos e m etodos com visibilidade p ublica Vis vel no m odulo (visibilidade de pacote): se um atributo ou m etodo possui visibilidade de pacote, somente os clientes que pertencerem ao mesmo m odulo (pacote) podem acess a-lo diretamente. Os clientes externos continuam a enxergar somente os atributos e m etodos com visibilidade p ublica

Nota c ao UML para Visibilidade


O modicador de visibilidade e representado antes do atributo ou opera c ao. Existem quatro modicadores: + p ublica - privada
Classe atributo1:TipoAtrib1 #atributo2:TipoAtrib2 ~atributo3:TipoAtrib3 operao pblica operao protegida operao privada operao com visibilidade de pacote +operacao1():TipoResposta #operacao2():TipoResposta operacao3():TipoResposta ~operacao4():TipoResposta atributo privado atributo protegido atributo com visibilidade de pacote

# protegida vis vel no pacote

Visibilidade Protegida (III)


a alterando um atributo pri A classe ContaDePoup est vado denido pela classe base Isso somente e poss vel porque a visibilidade do atributo saldo e estabelecida como protegida na classe ContaBancaria O que acontece se alterarmos a visibilidade protegida de saldo para visibilidade privada?

Clientes por Heran ca X Clientes por Instancia c ao


Heran ca introduz dois tipos de clientes de uma classe: Clientes por Instancia c ao: os usu arios criam inst ancias da classe e manipulam-as atrav es de sua interface p ublica. Esses clientes s ao objetos Clientes por Heran ca: os usu arios s ao as pr oprias subclasses que herdam os m etodos e atributos da classe base. Esses clientes s ao classes

Instancia c ao de um Objeto
Documento

Carta << . instance_of >> c1:Carta Estado do objeto "c1" autor = "Joana" :String dataDeChegada = 05/10/2006 transporte = "Areo" :String + Carta ():Carta + imprimir ():void + editar ():void + anexar ():void :Date

Interface pblica do objeto "c1"