1.
ANÁLISE PROJETO E
PROGRAMAÇÃO PARA WEB
CLASSES ABSTRATAS
Profª. Maria Alice Jovinski
2.
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]
3.
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.
4.
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.
5.
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.
6.
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.
7.
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.
9.
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
}
10.
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+")");
}
}
11.
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);
}
}
12.
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+")");
}
}
13.
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();
}
}
14.
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.
15.
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.
16.
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.
17.
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
18.
CLASSES E OBJETOS
Diagrama de Classes
Pessoa
Diagrama de Objetos/Instâncias
João:Pessoa Maria:Pessoa Ana
19.
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
20.
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.
21.
ATRIBUTOS
Diagrama de Classes/Objetos
Pessoa Represente a
Nome: String visibilidade
desses
Idade: Inteiro atributos.
:Pessoa :Pessoa
Nome=João Maria
Idade= 28 25
22.
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
23.
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.
24.
OPERAÇÕES E MÉTODOS
Diagrama de Classes
Supondo que o
Pessoa obterIdade() seja usado
somente por um objeto
-Nome: String desta classe, qual deve
-Idade: Inteiro ser o símbolo de
visibilidade para este
método?
mudarNome()
obterIdade()
26.
ASSOCIAÇÕES
É uma relação que descreve um conjunto de
vínculos entre elementos de modelo
Podem ser reflexivas, binárias, ternárias, etc.
27.
ASSOCIAÇÕES
Diagrama de Classes
País Cidade
Tem-capital
Nome Nome
Diagrama de Objetos
:País :Cidade
Tem-capital
Brasil Brasília
28.
ASSOCIAÇÕES BINÁRIAS
Quando há duas classes envolvidas na associação
de forma direta de uma para a outra (mutualismo)
Empregado Empresa
Trabalha-para
29.
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.
Carro Roda
se-move-sobre
4
30.
MULTIPLICIDADE DE ASSOCIAÇÃO
Mais exemplos....
Empregado Empresa
Trabalha-para
0..*
Workstation 0..1 Janela
console
31.
MULTIPLICIDADE - UML
Exatamente 1
0..*
Muitos (zero ou mais)
0..1
Opcional (zero ou um)
1..*
Um ou mais
4
Numericamente Especificado (exatamente 4)
2,4..7
Numericamente Especificado (2,4,5,6 ou 7)
32.
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);
Pessoa Empregado Empregador Empresa
Trabalha-para
(associação)
33.
ASSOCIAÇÃO
Diagrama de Classes
Empregado Trabalha-para Empresa
Nome Nome
Cargo 1..*
Diagrama de Instâncias (Objetos)
:Empregado Trabalha-para :Empresa
Lucas
IBM
Analista 1..*
34.
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.
35.
AGREGAÇÃO
Ex: Diagrama de Classes
Microcomputador
Tipo
Placa-Mãe Processador RAM
Marca Velocidade Capacidade
36.
AGREGAÇÃO
Ex: Diagrama de Instâncias (Objetos)
:Micro
P-IV
:Placa-Mãe :CPU :RAM
ASUS 1.4 Ghz 128 MB
38.
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.
39.
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.
40.
GENERALIZAÇÃO/ESPECIALIZAÇÃO
Ex.:
Pessoa
matrícula
nome
idade
mudarNome()
obterIdade()
Funcionário Professor
promover() contratar()
41.
ATENÇÃO
Pode confundir em virtude da notação
G A
Generalização = é-um
Agregação = tem-um, é-parte-de
Parece que tem um bloqueador de anúncios ativo. Ao listar o SlideShare no seu bloqueador de anúncios, está a apoiar a nossa comunidade de criadores de conteúdo.
Odeia anúncios?
Atualizámos a nossa política de privacidade.
Atualizámos a nossa política de privacidade de modo a estarmos em conformidade com os regulamentos de privacidade em constante mutação a nível mundial e para lhe fornecer uma visão sobre as formas limitadas de utilização dos seus dados.
Pode ler os detalhes abaixo. Ao aceitar, está a concordar com a política de privacidade atualizada.