Aula classes abstratas 3º periodo uniao
description
Transcript of Aula classes abstratas 3º periodo uniao
ANÁLISE PROJETO E
PROGRAMAÇÃO PARA WEB
Profª. Maria Alice Jovinski
CLASSES ABSTRATAS
ABSTRAÇÃO
“Consiste em enfocar nos aspectos
essenciais de uma entidade e
ignorar suas propriedades internas.
Significa enfocar no que um objeto é
e faz, antes de decidir como ele
dever ser implementado”
[Rumbaugh]
ABSTRAÇÃO
A abstração se preocupa com a
visão superficial de um objeto, por
isso serve para separar o
comportamento de um objeto de sua
implementação.
ABSTRAÇÃO
É independente de uma linguagem, mas linguagens
OO dão mais poder.
Ex.: Os atributos de um Carro dependem de seu ponto de
vista.
Ponto de vista de um vendedor:
Modelo, Preço, Cor.
Ponto de vista de um mecânico;
Tipo de motor, tipo de transmissão.
ABSTRAÇÃO EM JAVA
Através da definição de classes abstratas.
São classes definidas exclusivamente para servirem
de classe base.
Não podem gerar objetos.
Para se definir uma classe abstrata usa-se a palavra
reservada – abstract.
CLASSES ABSTRATAS
São classes que se comportam como um esqueleto
(não podem ser instanciadas)
As classes filhas de uma classe abstrata apenas herdam o
que está definido
Define a estrutura sem fornecer a implementação
completa de cada método.
CLASSES ABSTRATAS
Uma classe abstrata pode conter métodos abstratos
ou não.
Operações que têm seu protocolo definido na classe
abstrata e são implementadas nas classes derivadas.
Desejando-se utilizar os métodos abstratos, estes devem
ser implementados nas classes derivadas.
Sempre que for definido um método abstrato a classe
deve ser abstrata.
CLASSE ABSTRATA FORMAGRAFICA
Gráfica
EXEMPLO CLASSE ABSTRATA
FORMAGRAFICA
abstract class FormaGrafica {
protected float x,y; ....
public void move(float dx,float dy) {
this.x+=dx; this.y+=dy;
}
....
abstract public void mostra(); //método abstrato
}
EXEMPLO CLASSE PONTO
class Ponto extends FormaGrafica {
public Ponto(float ax,float ay) {
this.x=ax; this.y=ay;
}
public void mostra() { System.out.println("("+this.x+","+this.y+")");
}
}
MAIS UM EXEMPLO: CÍRCULO
class Circulo extends FormaGrafica {
protected float raio;
public Circulo(float ax,float ay, float raio) {
this.x=ax; this.y=ay; this.raio=raio;} public void mostra() {
System.out.println("("+this.x+","+this.y+")");
System.out.println(“Raio+“:this.raio);
}
}
EXEMPLO CLASSE RETANGULO
class Retangulo extends FormaGrafica {
protected float dx,dy; //canto superior x,y
public Retangulo(float ax,float ay,float dx,float dy) {
this.x=ax; this.y=ay;
this.dx=dx; this.dy=dy;
}
public void move(float x, float y, float dx, float dy) {
super.move(x,y);
this.dx+=dx;
this.dy+=dy;
}
public void mostra() { System.out.println("("+this.x+","+this.y+")("+dx+","+dy+")");
}
}
TESTANDO AS FORMAS GRÁFICAS
public class Main {
public static void main(String[] args) {
Ponto pt = new Ponto(15,1);
Circulo circ = new Circulo(1,10,50);
Retangulo ret = new Retangulo(1,1,15,20);
System.out.println("Ponto");
pt.mostra();
System.out.println("Circulo");
circ.mostra();
System.out.println("Retangulo");
ret.mostra();
}
}
CLASSES DE ANÁLISE
Representam um modelo conceitual primário para
elementos que têm responsabilidades e
comportamento no sistema.
São mantidas em um alto nível, numa visão
puramente conceitual.
CLASSES E OBJETOS
Objeto é simplesmente alguma coisa que faz
sentido no contexto da aplicação.
Não deve ter nomes vagos
Ex.: Dados, Informação.
CLASSES E OBJETOS
A Classe descreve um grupo de objetos com
propriedades similares (atributos), comportamento
comum (operações), relacionamento com outros
objetos e semântica comum
Ex.: Pessoa, empresa, janela
Agrupando Objetos em Classes nós estamos
abstraindo o problema.
DIAGRAMA DE ESTRUTURA ESTÁTICA
Diagrama de Classes
É um esquema, padrão, ou molde, para descrever,
várias possíveis instâncias de dados.
Descreve as Classes
CLASSES E OBJETOS
Diagrama de Classes
Diagrama de Objetos/Instâncias
Pessoa
João:Pessoa Maria:Pessoa Ana
ATRIBUTOS
Um atributo é uma propriedade de um objeto Ex.: Nome, idade (atributos de pessoa)
Cada atributo tem um valor para cada instância A idade de João é 26
Devem ser valores de dados puros, e não objetos
Um atributo pode ter um valor default
ATRIBUTOS
Visibilidade:
+ {público}: o elemento pode ser utilizado pelo objeto no qual ele pertence e por qualquer objeto cliente.
# {protegido}: o elemento pode ser utilizado somente pelo próprio objeto no qual ele pertence, ou se existirem, pelas suas subclasses.
- {privado}: o elemento pode ser utilizado somente pelo objeto ao qual ele pertence.
~{package}: visível a classes do mesmo package.
ATRIBUTOS
Diagrama de Classes/Objetos
Pessoa
Nome: String
Idade: Inteiro
:Pessoa
Nome=João
Idade= 28
:Pessoa
Maria
25
Represente a
visibilidade
desses
atributos.
OPERAÇÕES E MÉTODOS
Uma operação é uma função, ou transformação,
que pode ser aplicada para ou por objetos em uma
classe
Contratar, PagarSalários são operações da Classe
Empresa
Um método é uma implementação específica de
uma Operação
OPERAÇÕES E MÉTODOS
Operações podem ser polimórficas
Imprimir arquivos binários, textos, figuras.
Operações podem receber parâmetros
Mover um polígono 10 pixels
Todas as instâncias de uma classe compartilham
as mesmas operações.
OPERAÇÕES E MÉTODOS
Diagrama de Classes
Pessoa
-Nome: String
-Idade: Inteiro
mudarNome()
obterIdade()
Supondo que o
obterIdade() seja usado
somente por um objeto
desta classe, qual deve
ser o símbolo de
visibilidade para este
método?
RELACIONAMENTOS
Associação
Agregação
Composição
Generalização
Especialização
ASSOCIAÇÕES
É uma relação que descreve um conjunto de
vínculos entre elementos de modelo
Podem ser reflexivas, binárias, ternárias, etc.
ASSOCIAÇÕES
Diagrama de Classes
Diagrama de Objetos
País
Nome
Cidade
Nome
Tem-capital
:País
Brasil
:CidadeTem-capital
Brasília
ASSOCIAÇÕES BINÁRIAS
Quando há duas classes envolvidas na associação
de forma direta de uma para a outra (mutualismo)
Empregado EmpresaTrabalha-para
MULTIPLICIDADE DE ASSOCIAÇÃO
Especifica quantas instâncias de uma
classe pode se relacionar com cada
instância de outra classe.
Limita o número na relação entre os
objetos.
Geralmenteé“um”ou“muitos”,maspode
ser um conjunto finito.
Carrose-move-sobre
Roda
4
MULTIPLICIDADE DE ASSOCIAÇÃO
Mais exemplos....
Trabalha-paraEmpresaEmpregado
0..*
console
JanelaWorkstation 0..1
MULTIPLICIDADE - UML
Exatamente 1
Muitos (zero ou mais)
Opcional (zero ou um)
Um ou mais
Numericamente Especificado (exatamente 4)
Numericamente Especificado (2,4,5,6 ou 7)
0..*
0..1
1..*
4
2,4..7
PAPÉIS DA ASSOCIAÇÃO
É o nome que identifica um lado da Associação.
Também chamado de Papel Executado (ou Nomes de
Papel, Role Names);
EmpresaPessoa
Trabalha-para
(associação)
Empregado Empregador
ASSOCIAÇÃO
Diagrama de Classes
Diagrama de Instâncias (Objetos)
EmpresaTrabalha-paraEmpregado
Nome
Cargo 1..*
:EmpresaTrabalha-para:Empregado
Lucas
Analista 1..*IBM
Nome
AGREGAÇÃO
Éarelação“parte-todo”ou“uma-parte-de”.
É uma forma especial de associação.
Éumarelaçãodotipo“todo/parte”ou“possuium”
na qual uma classe representa uma coisa grande
que é composta de coisas menores.
AGREGAÇÃO
Ex: Diagrama de Classes
Placa-Mãe Processador RAM
Microcomputador
Tipo
Velocidade CapacidadeMarca
AGREGAÇÃO
Ex: Diagrama de Instâncias (Objetos)
:Placa-Mãe :CPU :RAM
:Micro
P-IV
ASUS 1.4 Ghz 128 MB
AGREGAÇÃO
Departamento
Instituto
GENERALIZAÇÃO
Generalização é o relacionamento que organiza
Classes baseado em suas similaridades e diferenças.
É a capacidade de se criar supertipos que encapsulam
a estrutura e o comportamento comum a vários
subtipos. Os procedimentos para se obter
generalização são:
Identificar similaridades de estrutura/comportamento entre
várias classes.
Criar o supertipo para encapsular a estrutura e o
comportamento comum a mais de uma classe.
Os objetos originais passam a ser subtipos do novo supertipo
criado.
ESPECIALIZAÇÃO
É a capacidade de se criar subtipos que
representam refinamentos nos quais a
estrutura e/ou comportamento do supertipo
são adicionados ou modificados.
Os procedimentos são:
Perceber que algumas classes apresentam
estrutura e/ou comportamento especializado.
Criar subtipos de acordo com a especialização.
GENERALIZAÇÃO/ESPECIALIZAÇÃO
Ex.:
Funcionário
promover()
Pessoamatrícula
nome
idade
mudarNome()
obterIdade()
Professor
contratar()
ATENÇÃO
Pode confundir em virtude da notação
Generalização = é-um
Agregação = tem-um, é-parte-de
G A