Aula classes abstratas 3º periodo uniao

Preview:

DESCRIPTION

Aula sobre classes abstratas ministrada para a matéria de Análise Projeto e Programação Web do curso de TSI.

Citation preview

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”,‏mas‏pode‏

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

É‏a‏relação‏“parte-todo”‏ou‏“uma-parte-de”.

É uma forma especial de associação.

É‏uma‏relação‏do‏tipo‏“todo/parte”‏ou‏“possui‏um”‏

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