• Nenhum resultado encontrado

conceitosBasicosOO

N/A
N/A
Protected

Academic year: 2021

Share "conceitosBasicosOO"

Copied!
30
0
0

Texto

(1)

Objetos (I)

• Objetos s˜ao entidades que encapsulam informa¸c˜ao

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 ´unica 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 ´unica. Identidade ´e a

propriedade de um objeto que o disting¨ue de outros objetos

(2)
(3)

Objetos (III)

Métodos Dados I n t e r f a c e

• Em resumo, um objeto tem um estado, um

comporta-mento (“behaviour”) bem definido, e uma identidade que ´e ´unica

(4)

Opera¸c˜

oes vs. M´

etodos

Método Método Método Operação Operação Operação Operação Método Valores Atributos dos

(5)

Classes (I)

• Uma classe ´e a descri¸c˜ao de um molde (“skeleton”)

que especifica os atributos (ou propriedades) e o com-portamento para um conjunto de objetos similares

• Todo objeto ´e instˆancia de uma classe

• Atributos e opera¸c˜oes s˜ao partes da defini¸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

ob-jeto, e s˜ao o ´unico meio para acessar, manipular e modificar os atributos de um objeto

(6)
(7)

Classes (III)

• Um objeto comunica-se com outro atrav´es de

mensa-gens que identificam opera¸c˜oes a serem realizadas no segundo objeto

• Um objeto responde a uma mensagem mudando

possi-velmente 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

(8)

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

(9)

Dicas e Recomenda¸c˜

oes (I)

• De acordo com o conceito de TAD, uma classe deve

definir um conjunto de atributos com visibilidade pri-vada (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.

(10)

Dicas e Recomenda¸c˜

oes (II)

Uma classe ´e considerada bem estruturada quando:

1. Proporciona uma abstra¸c˜ao bem definida de um ele-mento oriundo do vocabul´ario do dom´ınio do problema ou da solu¸c˜ao.

2. ´E formada por um conjunto pequeno e bem definido de responsabilidades que devem ser cumpridas pela classe.

3. Proporciona uma separa¸c˜ao clara entre a especifica¸c˜ao da abstra¸c˜ao e a sua implementa¸c˜ao.

4. ´E simples e f´acil de entender, e ao mesmo tempo tem capacidade de extens˜ao e adapta¸c˜ao.

(11)

Exemplo de Classe em UML

Documento −autor :String

−dataDeChegada :int

<< create >> + Documento ():Documento + criarDocumento (s:String ,i:int ):void + imprimir ():void + editar ():void Nome da Classe ATRIBUTOS: Visibilidade privada (−) OPERAÇÕES: Visibilidade pública (+)

(12)

Cria¸c˜

ao de Objetos do tipo Documento(II)

objeto do tipo Documento

Variável Tipo de Objeto

d1 para um objetodo tipo Documento referência Tipo de Variável

(13)

Classifica¸c˜

ao/Instancia¸c˜

ao (I)

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

objeto classe

joao:Usuario

Instanciação

(os objetos depen− dem da classe) Classificação maria:Usuario objeto << instance_of >>. << instance_of >> . Usuario −nome :String −codigo :String

+ verificarCodigo (cod :String ):boolean

• Um objeto ´e instˆancia de apenas uma classe

(14)
(15)

Agrega¸c˜

ao/Decomposi¸c˜

ao (I)

Usuario −nome :String

−codigo :String

+ verificarCodigo (cod :String ):boolean

Publicacao −numeroTombo :String −nome :String + reservar ():void Biblioteca −identificador :String −endereco :String + listarPublicacoes ():void + listarUsuarios ():void Agregação Decomposição

• 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

• ´E um mecanismo que permite a montagem do todo a partir de suas partes

(16)

Associa¸c˜

ao (I)

Reserva −codigo :String −dataInicio :Date −dataFim :Date + cancelar ():void + efetuar ():void * efetua 1 Usuario −nome :String −codigo :String

+ verificarCodigo (cod :String ):boolean

• 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.

(17)
(18)

Heran¸

ca Simples

• Heran¸ca (ou “subclassing”) ´e um mecanismo para

de-rivar novas classes a partir de classes existentes atrav´es de um processo de refinamento

• 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. Redefinir a implementa¸c˜ao de opera¸c˜oes existentes

• Uma superclasse (ou classe base) proporciona a

fun-cionalidade que ´e comum a todas as subclasses (ou classes derivadas), enquanto que uma subclasse pro-porciona a funcionalidade adicional que especializa o seu comportamento.

(19)

Generaliza¸c˜

ao/Especializa¸c˜

ao (I)

Usuario −nome :String

−codigo :String

+ verificarCodigo (cod :String ):boolean Classe base Classe derivada Generalização Classe derivada Aluno −anoEscolar :int + suspender ():void Especialização Professor −tempoServico :int + aposentar ():void

• Implementa o conceito de heran¸ca de tipos: ´e-um-tipo-de

• Permite que todas as instˆancias de uma categoria espec´ıfica sejam tamb´em consideradas instˆancias de uma categoria mais abrangente

(20)
(21)

Exemplo de Heran¸ca

Documento −autor :String −dataDeChegada :Date + imprimir ():void + editar ():void

<< create >> + Documento ():Documento

Carta −transporte :String

+ anexar ():void

<< create >> + Carta ():Carta

Telegrama −hora :Time

+ registrar ():void + pagar ():void

<< create >> + Telegrama ():Telegrama

(22)

Instancia¸c˜

ao de um Objeto

c1:Carta −autor = "Joana" :String

−dataDeChegada = 05/10/2006 :Date

−transporte = "Aéreo" :String

+ imprimir ():void + editar ():void + anexar ():void + Carta ():Carta Documento Carta << instance_of >>. Estado do objeto "c1" Interface pública do objeto "c1"

(23)

Defini¸c˜

ao de Tipos

• Cria¸c˜ao de um objeto do tipo Documento:

Documento c1 = new Documento();

Documento

Carta

<< instance_of >> .

d1:Documento −autor = Marcos :String

−dataDeChegada= 25/01/2006 :Date + Documento ():Documento

+ imprimir ():void + editar ():void

(24)

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

(25)

Os Modificadores de Visibilidade (I)

• P´ublica: qualquer categoria de cliente pode acessar,

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

(26)

Os Modificadores de Visibilidade (II)

• Vis´ıvel pela subclasse (protegida): se um atributo

ou m´etodo ´e protegido, somente os clientes por he-ran¸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, so-mente 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

(27)

Nota¸c˜

ao UML para Visibilidade

• O modificador de visibilidade ´e representado antes do

atributo ou opera¸c˜ao. Existem quatro modificadores: ‘+’→ p´ublica ‘-’→ privada ‘#’→ protegida ‘∼’→ vis´ıvel no pacote Classe −atributo1:TipoAtrib1 #atributo2:TipoAtrib2 ~atributo3:TipoAtrib3 +operacao1():TipoResposta #operacao2():TipoResposta −operacao3():TipoResposta ~operacao4():TipoResposta atributo privado atributo protegido operação pública operação privada operação protegida

atributo com visibilidade de pacote

operação com

(28)

Vi

sibilidade Protegida (III)

• A classe ContaDePoup est´a alterando um atributo

pri-vado definido pela classe base

• Isso somente ´e poss´ıvel porque a visibilidade do

atri-buto saldo ´e estabelecida como protegida na classe ContaBancaria

• O que acontece se alterarmos a visibilidade protegida

(29)

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

(30)

Instancia¸c˜

ao de um Objeto

c1:Carta −autor = "Joana" :String

−dataDeChegada = 05/10/2006 :Date

−transporte = "Aéreo" :String

+ imprimir ():void + editar ():void + anexar ():void + Carta ():Carta Documento Carta << instance_of >>. Estado do objeto "c1" Interface pública do objeto "c1"

Referências

Documentos relacionados

Os autores apresentam o estudo crítico de 16 pacientes (16 pés) com fratura-luxação da articulação de Lisfranc tratados pelo método cruento através de incisões longitu- dinais

Quantidade de dinheiro X dada para v´ arios investidores conta privada = Todo o dinheiro investido volta para o investidor.. conta p´ ublica = X*K dividido entre todos os

Governo: Duarte e Veras trazem o conceito de Matos que mostra a Comunica¸c˜ao P´ublica como “processo de comunica¸c˜ao instaurado em uma esfera p´ublica que engloba Estado, governo

Sabonete líquido - pele acneica Actine Laboratório Pierre Fabre do Brasil Ltda.. Sabonete líquido - pele acneica - 240 ml Actine Laboratório Pierre Fabre do

O valor relativo ao montante da recapitaliza¸c˜ ao p´ ublica (ponderado pelos.. Uma explica¸c˜ ao poss´ıvel para este resultado pode ser a natureza da recapitaliza¸c˜ ao p´

indiscriminadamente, membros privados só podem ser acessados pela própria classe, e membros de pacote são acessados por classes declaradas no mesmo pacote da classe. Conceitos

● Crie a classe SMSReceiver: Novo pacote para nosso listener Classe filha

O objetivo é treinar um Perceptron com dois atributos de entrada para classificar o Grupo ao qual o par de entradas (atributo1, atributo2) pertence.. Ao final