Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Heran ca Simples
Heran ca (ou subclassing) e um mecanismo para derivar 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 co es 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.
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
Deni c ao de Tipos
A hierarquia especica 3 tipos diferentes: Documento = {Documento(), imprimir(), editar()} Carta = {Carta(), imprimir(), editar(), anexar()} Telegrama = {Telegrama(), imprimir(), editar(), registrar(), pagar()} Cria ca o de um objeto do tipo Carta: Carta c1 = new Carta();
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
Deni c ao de Tipos
Cria ca o de um objeto do tipo Documento:
Documento
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
5 Lataria Roda
3 Banco Motor
Carro cor :String lataria :Lataria bancoTraseiro :Banco bancoMotorista :Banco bancoPassageiro :Banco motor :Motor rodaFrontalEsquerda :Roda rodaFrontalDireita :Roda rodaTraseiraEsquerda :Roda rodaTraseiraDireita :Roda + ligar ():void + andar ():void Propriedade
Atributos
Lataria
Roda
Banco
Motor
Usos de Heran ca
O mecanismo de heran ca permite a constru c ao de duas categorias de hierarquias: Hierarquias de implementa c ao Hierarquias de comportamento
Hierarquias de Implementa c ao
ca e usada como uma t ecnica para implementar Heran TADs que s ao similares a outros j a existentes (reutiliza c ao de c odigo) Nesse caso, o programador usa heran ca como uma t ecnica de implementa c ao, com nenhuma inten c ao de garantir que a subclasse tenha o mesmo comportamento da superclasse Voc e pode herdar comportamento n ao desejado, implicando num comportamento INCORRETO da subclasse
Exemplo
Classes Lista <<instance_of>> adicionaInicio() removeInicio() adicionaFim() removeFim() l:Lista adicionaInicio() removeInicio() adicionaFim() removeFim() Objetos Mensagens Entendidas
Pilha
<<instance_of>> p:Pilha
empilha() desempilha()
Pilha
NO RECOMENDADO
RECOMENDADO
NO RECOMENDADO
RECOMENDADO
Deriva c ao P ublica
Java:class Derivada extends Base... C++: class Derivada: public Base ...; Todos os membros p ublicos da classe Base tornam-se membros p ublicos da classe Derivada.
+empilha():. +desempilha():.
NO RECOMENDADO
RECOMENDADO
Humano
Baleia
Gato
Em um sistema banc ario, uma classe ContaCor, que representa uma conta corrente, deve oferecer tr es opera co es: (i) creditaValor(); (ii) debitaValor(); e (iii) devolveSaldo(). Al em disso, uma conta corrente pode ser classicada como especial (ContaEsp), que e um tipo de conta corrente. Diferentemente de uma conta corrente comum, ao se criar uma conta corrente especial, e adicionado um valor de R$ 200,00 ao saldo da conta. Esse valor se refere ao limite de cr edito oferecido pelo banco. A classe ContaEsp dene duas novas opera co es: (i) alteraLimite(); e (ii) devolveLimiteUsado().
ContaEsp limite :double << create >> + ContaEsp (nome :Strng ,val:double ,num :int ,pwd :int ,lim :double ):ContaEsp + alterarLimite (lim :double ,pwd :int ):boolean + devolverLimiteUsado (pwd :int ):double
Classe ContaCor
// arquivo ContaCor.java class ContaCor { private int estado; // 1 = ativo ; 2 = inativo private int senha; private int numConta; private String titular; private double saldoAtual; public ContaCor(String nome, double val, int num ,int pwd) {...} } public boolean creditarValor(double val) {...} public boolean debitarValor(double val, int pwd) {...} public double devolverSaldo(int pwd) {...}
Exerc cio 1
Um editor de desenhos geom etricos possui uma tela para desenhar. Essa tela pode ser constitu da de muitas guras. Figuras podem ser c rculos, linhas, pol gonos e grupos. Um grupo consiste de muitas guras e um pol gono e composto por um conjunto de linhas. Quando um cliente pede para que uma tela se desenhe, a tela, por sua vez, pede para cada uma das guras associadas que se desenhe. Da mesma forma, um grupo pede que todos os seus componentes se desenhem. Crie uma hierarquia de generaliza c ao/especializa c ao que classique essas diferentes guras geom etricas e identique o comportamento de cada tipo abstrato de dados que voc e criar, bem como os seus respectivos atributos.
+desenhar():void
Figura * +desenhar():void
Polgono
Grupo
+desenhar():void
+desenhar():void
ClasseDerivada
+display():.
+display():.
ClasseDerivada
+display():???
RelogioCalendario
<< create >> + RelogioCalendario (d:int ,m :int ,a:ano ,h:int ,s:int ,m :int ,pm :int ):RelogioCalendario + avancar ():void
Termostato tempRequerida:. +setTempRequerida():. +fazerMonitoramento():. Termometro t = new Termostato; Chave c = new Termostato; Termostato ter = new Termostato;
Ancestral atributo :.
Base1 atributo
Base2 atributo
EditXWindow
ContaPoup
ContaCorrentePoup
ContaCorrente
Perda: ContaCorrentePoup e um tipo de conta, mas ela n ao e um tipo de ContaPoup e nem ContaCorrente ContaBancaria = new ContaCorrentePoup(); ContaPoup = new ContaCorrentePoup(); // ERRO ContaCorrente = new ContaCorrentePoup(); // ERRO
Exerc cio 1
Uma abstra c ao pode ser vista atrav es de m ultiplas perspectivas. Por exemplo, uma pessoa pode ser classicada de acordo com o seu sexo como masculino ou feminino e pode tamb em ser classicada de acordo com a sua idade como crian ca, jovem e adulto.
Pessoa
SexoMasculino
SexoFeminino
Criana
Jovem
Adulto
Respostas
SexoMasculino
SexoFeminino
Criana
Jovem
Adulto
Menino
Menina
Mulher
...
Sexo
FaixaEtaria
SexoMasculino
SexoFeminino
Criana
Jovem
Adulto