aula classes abstratas 3º periodo uniao
DESCRIPTION
Aula sobre classes abstratas ministrada para a matéria de Análise Projeto e Programação Web do curso de TSI.TRANSCRIPT
![Page 1: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/1.jpg)
ANÁLISE PROJETO E
PROGRAMAÇÃO PARA WEB
Profª. Maria Alice Jovinski
CLASSES ABSTRATAS
![Page 2: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/2.jpg)
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]
![Page 3: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/3.jpg)
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.
![Page 4: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/4.jpg)
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.
![Page 5: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/5.jpg)
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.
![Page 6: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/6.jpg)
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.
![Page 7: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/7.jpg)
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.
![Page 8: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/8.jpg)
CLASSE ABSTRATA FORMAGRAFICA
Gráfica
![Page 9: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/9.jpg)
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
}
![Page 10: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/10.jpg)
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+")");
}
}
![Page 11: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/11.jpg)
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);
}
}
![Page 12: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/12.jpg)
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+")");
}
}
![Page 13: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/13.jpg)
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();
}
}
![Page 14: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/14.jpg)
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.
![Page 15: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/15.jpg)
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.
![Page 16: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/16.jpg)
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.
![Page 17: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/17.jpg)
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
![Page 18: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/18.jpg)
CLASSES E OBJETOS
Diagrama de Classes
Diagrama de Objetos/Instâncias
Pessoa
João:Pessoa Maria:Pessoa Ana
![Page 19: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/19.jpg)
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
![Page 20: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/20.jpg)
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.
![Page 21: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/21.jpg)
ATRIBUTOS
Diagrama de Classes/Objetos
Pessoa
Nome: String
Idade: Inteiro
:Pessoa
Nome=João
Idade= 28
:Pessoa
Maria
25
Represente a
visibilidade
desses
atributos.
![Page 22: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/22.jpg)
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
![Page 23: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/23.jpg)
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.
![Page 24: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/24.jpg)
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?
![Page 25: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/25.jpg)
RELACIONAMENTOS
Associação
Agregação
Composição
Generalização
Especialização
![Page 26: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/26.jpg)
ASSOCIAÇÕES
É uma relação que descreve um conjunto de
vínculos entre elementos de modelo
Podem ser reflexivas, binárias, ternárias, etc.
![Page 27: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/27.jpg)
ASSOCIAÇÕES
Diagrama de Classes
Diagrama de Objetos
País
Nome
Cidade
Nome
Tem-capital
:País
Brasil
:CidadeTem-capital
Brasília
![Page 28: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/28.jpg)
ASSOCIAÇÕES BINÁRIAS
Quando há duas classes envolvidas na associação
de forma direta de uma para a outra (mutualismo)
Empregado EmpresaTrabalha-para
![Page 29: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/29.jpg)
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
![Page 30: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/30.jpg)
MULTIPLICIDADE DE ASSOCIAÇÃO
Mais exemplos....
Trabalha-paraEmpresaEmpregado
0..*
console
JanelaWorkstation 0..1
![Page 31: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/31.jpg)
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
![Page 32: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/32.jpg)
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
![Page 33: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/33.jpg)
ASSOCIAÇÃO
Diagrama de Classes
Diagrama de Instâncias (Objetos)
EmpresaTrabalha-paraEmpregado
Nome
Cargo 1..*
:EmpresaTrabalha-para:Empregado
Lucas
Analista 1..*IBM
Nome
![Page 34: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/34.jpg)
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.
![Page 35: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/35.jpg)
AGREGAÇÃO
Ex: Diagrama de Classes
Placa-Mãe Processador RAM
Microcomputador
Tipo
Velocidade CapacidadeMarca
![Page 36: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/36.jpg)
AGREGAÇÃO
Ex: Diagrama de Instâncias (Objetos)
:Placa-Mãe :CPU :RAM
:Micro
P-IV
ASUS 1.4 Ghz 128 MB
![Page 37: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/37.jpg)
AGREGAÇÃO
Departamento
Instituto
![Page 38: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/38.jpg)
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.
![Page 39: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/39.jpg)
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.
![Page 40: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/40.jpg)
GENERALIZAÇÃO/ESPECIALIZAÇÃO
Ex.:
Funcionário
promover()
Pessoamatrícula
nome
idade
mudarNome()
obterIdade()
Professor
contratar()
![Page 41: Aula classes abstratas 3º periodo uniao](https://reader030.vdocuments.net/reader030/viewer/2022020110/5496b6baac79592f2e8b518b/html5/thumbnails/41.jpg)
ATENÇÃO
Pode confundir em virtude da notação
Generalização = é-um
Agregação = tem-um, é-parte-de
G A