[CRASHCOURSE] Orientação a Objeto e UML

43
Orientação a objeto Crash-course MSc. Eng. Christopher S. Cerqueira

description

Resumão orientação a objeto e UML

Transcript of [CRASHCOURSE] Orientação a Objeto e UML

Page 1: [CRASHCOURSE] Orientação a Objeto e UML

Orientação a objeto

Crash-course

MSc. Eng. Christopher S. Cerqueira

Page 2: [CRASHCOURSE] Orientação a Objeto e UML

Roteiro

Diagrama de Classes.

Exemplo

Diagramas

UML

Associação

Agregação

Composição

Herança

Dependência

Relacionamentos

Definições / UML / Objeto

Encapsulamento

Modelo Objeto

O.O.

CSE-310

Page 3: [CRASHCOURSE] Orientação a Objeto e UML

Orientação a Objeto

CSE-310

Page 4: [CRASHCOURSE] Orientação a Objeto e UML

Definições • 60’-70’ – COBOL/FORTRAN/C (Estruturado)

• 80’-inicio 90’ – SmallTalk/ADA/C++ (Inicio da OO)

• 90’ – Java/UML (proliferação da OO)

• Mais do que um Modo de Programar!!!!!

• Pensamento abstrato sobre o domínio do problema o Conceitos do mundo real

• Cria modelos do mundo real

• Estes modelos simulam o mundo real.

CSE-310

Page 5: [CRASHCOURSE] Orientação a Objeto e UML

UML • Unified Modeling Language

• Vocabulário para descrição de modelos.

• Apelo para “Model Driven Architecture” http://www.omg.org/mda/

CSE-310

http://www.uml.org/

Page 6: [CRASHCOURSE] Orientação a Objeto e UML

Objeto?!! • Interface para uma estrutura de dados + seus

serviços

• Representação abstrata

CSE-310

Dados / Atributos (PRIVADOS)

Operações / Métodos / Serviços / Interfaces (PÚBLICOS)

Page 7: [CRASHCOURSE] Orientação a Objeto e UML

Encapsulamento • Abstração do sistema

• Quem usa não precisa saber como funciona.

• Precisa saber como utilizar.

• Uso pelas interfaces

CSE-310

“Contras”

•Pensamento não-linear

•Desconhecimento do todo

Prós

•Segurança

• Independência

Page 8: [CRASHCOURSE] Orientação a Objeto e UML

Modelo Objeto (UML) • Descreve Relacionamentos/Atributos/Operações

• Forma (MODELO) para o objeto

• (Diagramado no Enterprise Architect)

CSE-310

http://www.sparxsystems.com.au/

Identificação

Atributos

Métodos

Visibilidade: + public: (todos veem) - private: (só ele vê) # protected: (só ele e os filhos)

Itálico – método abstrato Torna a classe abstrata

Page 9: [CRASHCOURSE] Orientação a Objeto e UML

Instância • Realização de uma classe ( da forma)

C++

• Mago *hPotter = new Mago();

• Mago hPotter;

Java

• Mago hPotter = new Mago();

CSE-310

hPotter program program memory memory

hPotter

Page 10: [CRASHCOURSE] Orientação a Objeto e UML

Atributos • Atributos são definidos ao nível da classe,

enquanto que os valores dos atributos são definidos

ao nível do objeto.

• Ex.: o Uma pessoa (classe) tem os atributos nome, peso.

o João (objeto) é uma pessoa com nome “João” e peso “80kg”

• Uma classe não deve ter dois atributos com o

mesmo nome.

• Obs.: o Atributos estáticos – tem um único valor para todas as instâncias. No UML

o atributo estático é sublinhado

o Pode-se usar um valor inicial, caso tenha sido omitido.

CSE-310

Page 11: [CRASHCOURSE] Orientação a Objeto e UML

Métodos • Comportamento dos objetos é modelado nas

operações. o É algo que se pode pedir para ser feito a um objeto. Objetos da mesma

classe têm as mesmas operações

• Operações são definidas ao nível da classe, e a

invocação é operada ao nível do objeto.

• Padrão: Acesso e alteração dos valores do

atributos através de operações. (ex.: GETS/SETS)

CSE-310

Page 12: [CRASHCOURSE] Orientação a Objeto e UML

Pacotes • Organiza as classes em grupos

• Hierarquiza(fisicamente) o projeto

• Feels de um endereço web.

CSE-310

Page 13: [CRASHCOURSE] Orientação a Objeto e UML

Outras infos • Classes Abstratas – são classes que não podem ser

instanciadas

• Classes Concretas – são classes que podem ser

instanciadas

• <<Interfaces>> – Classes sem atributos e métodos

sem implementação. A implementação vem de

uma outra classe.

• Sobrecarga – Métodos com o mesmo nome, mas

com assinaturas diferentes (parâmetros de

entrada).

CSE-310

http://javafree.uol.com.br/artigo/871497/Tutorial-Java-3-Orientacao-a-Objetos.html

Page 14: [CRASHCOURSE] Orientação a Objeto e UML

Relações

CSE-310

Page 15: [CRASHCOURSE] Orientação a Objeto e UML

Ligações / Relações • Os objetos se relacionam.

• Relacionamentos precisam ser modelados.

• Exs.: o Um mago pode ser aluno ou professor

o Um mago joga um feitiço num monstro

o Um mago possui um pet.

o Uma escola possui magos.

o Um mago possui uma varinha, e a varinha conhece seu mago.

o Alunos dependem dos professores para aprender

CSE-310

Page 16: [CRASHCOURSE] Orientação a Objeto e UML

CSE-310

1 1

1

1 0..1

0..N

Generalização/Herança

Composição Agregação

Dependência

Agregação

N

N

Associação

Page 17: [CRASHCOURSE] Orientação a Objeto e UML

Herança • Relação semântica de “é

um(a)”

• Sub-classes herdam

propriedades

• Super-classes – propriedades

comuns

• Operação abstrata é realizada na classe concreta.

• Herança simples – apenas

uma super classe

• Herança múltipla – mais de

uma super classe

CSE-310

class Hogward

«abstract»

Mago

- nome :string

- tipo :string

+ feitico() :void

«property get»

+ getnome() :string

+ gettipo() :string

«property set»

+ setnome(string) :void

+ settipo(string) :void

Aluno

+ feitico() :void

Professor

+ feitico() :void

Um mago pode ser aluno ou professor

Page 18: [CRASHCOURSE] Orientação a Objeto e UML

Associação • É a relação entre objetos das classes.

• Implementação através de uma referencia.

• Pode haver mais de uma associação entre as

mesmas classes.

• Papéis indicam a semântica, multiplicidade e

visibilidade da associação.

CSE-310

N N

monstro mago ataca

defende

class Hogward

«abstract»

Mago

- nome :string

- tipo :string

+ feitico() :void

«property get»

+ getnome() :string

+ gettipo() :string

«property set»

+ setnome(string) :void

+ settipo(string) :void

Monstro

- nome :string

- tipo :string

+ defesa() :void

«property get»

+ getnome() :string

+ gettipo() :string

«property set»

+ setnome(string) :void

+ settipo(string) :void

+monstro

*

+mago

*

Um mago joga um feitiço num monstro

Page 19: [CRASHCOURSE] Orientação a Objeto e UML

Associação - Multiplicidade

• Muitos para Muitos * *

• Muitos para um * 1

• Um para um 1 1

• 1 - exatamente um

• 0..1 - zero ou 1

• * - zero ou mais

• 0..* - zero ou mais

• 1..* - um ou mais

• 1, 3..5 – um ou três a 5

CSE-310

Page 20: [CRASHCOURSE] Orientação a Objeto e UML

Associação - Multiplicidade

• Quando um objeto recebe múltiplas instancias de

outro é necessário controlar por estruturas de

dados.

CSE-310

Page 21: [CRASHCOURSE] Orientação a Objeto e UML

Associação - direção • Associações são classificadas quanto a

navegabilidade:

• Bidirecional – ambos objetos possuem referência

• Unidirecional – classe que recebe a seta recebe a

referência

CSE-310

Page 22: [CRASHCOURSE] Orientação a Objeto e UML

Agregação • Associação com significado de contém / faz parte

de.

• Relação de inclusão

CSE-310

1 1 0..1

0..N

Um mago possui um pet. Uma escola possui magos.

class Hogward

«abstract»

Mago

- nome :string

- tipo :string

+ feitico() :void

«property get»

+ getnome() :string

+ gettipo() :string

«property set»

+ setnome(string) :void

+ settipo(string) :void

Escola

- nome :string

+ ensina() :void

«property get»

+ Getnome() :string

«property set»

+ Setnome(string) :void

Pet

- nome :string

- habilidade :string

+ realizaHabilidade() :void

«property get»

+ Getnome() :string

+ Gethabilidade() :string

«property set»

+ Setnome(string) :void

+ Sethabilidade(string) :void

+magos

0..*

+escola

1

+pet

0..1

+mago

1

Page 23: [CRASHCOURSE] Orientação a Objeto e UML

Composição • Forma mais forte de agregação.

• Forte grau de dependência, cada parte só pode

fazer parte de um todo, o todo e as partes tem o

mesmo tempo de vida.

CSE-310

1

1

class Hogward

«abstract»

Mago

- nome :string

- tipo :string

+ feitico() :void

«property get»

+ getnome() :string

+ gettipo() :string

«property set»

+ setnome(string) :void

+ settipo(string) :void

Varinha

- nome :string

+ feitico() :void

«property get»

+ getnome() :string

«property set»

+ setnome(string) :void

+varinha

1

+mago

1

Page 24: [CRASHCOURSE] Orientação a Objeto e UML

Dependência • Relação de uso, em que uma mudança na

especificação do elemento usado pode afetar o

elemento utilizador.

• Objeto usa outro como parâmetro de um método.

CSE-310

class Hogward

Aluno

+ feitico() :void

Professor

+ feitico() :void

Alunos dependem dos professores para aprender

Page 25: [CRASHCOURSE] Orientação a Objeto e UML

UML Diagramas

Looks

CSE-310

Page 26: [CRASHCOURSE] Orientação a Objeto e UML

Hierarquia

CSE-310

http://pt.wikipedia.org/wiki/UML

Page 27: [CRASHCOURSE] Orientação a Objeto e UML

Diagramas estruturais • Diagrama de Classes

• Diagrama de Objetos

• Diagrama de Componentes

• Diagrama de Instalação

• Diagrama de Pacotes

• Diagrama de Estrutura Composta

• Diagrama de Perfil

CSE-310

Page 28: [CRASHCOURSE] Orientação a Objeto e UML

Diagramas comportamentais

• Diagrama de caso de uso

• Diagrama de estados

• Diagrama de atividades

• Diagramas de interação o Diagrama de sequência

o Diagrama de interação

o Diagrama de colaboração

o Diagrama de tempo

CSE-310

Page 29: [CRASHCOURSE] Orientação a Objeto e UML

DE - Classes

CSE-310

Page 30: [CRASHCOURSE] Orientação a Objeto e UML

DE - Objetos

CSE-310

Page 31: [CRASHCOURSE] Orientação a Objeto e UML

DE - Componentes

CSE-310

Page 32: [CRASHCOURSE] Orientação a Objeto e UML

DE - Instalação

CSE-310

Page 33: [CRASHCOURSE] Orientação a Objeto e UML

DE - Pacotes

CSE-310

Page 34: [CRASHCOURSE] Orientação a Objeto e UML

DE – Estrutura Composta

CSE-310

Page 35: [CRASHCOURSE] Orientação a Objeto e UML

DE - Perfil

CSE-310

Page 36: [CRASHCOURSE] Orientação a Objeto e UML

DC – Casos de uso

CSE-310

Page 37: [CRASHCOURSE] Orientação a Objeto e UML

DC - Estados

CSE-310

Page 38: [CRASHCOURSE] Orientação a Objeto e UML

DC - Atividades

CSE-310

Page 39: [CRASHCOURSE] Orientação a Objeto e UML

DC – I – Sequência

CSE-310

Page 40: [CRASHCOURSE] Orientação a Objeto e UML

DC – I – Interação

CSE-310

Page 41: [CRASHCOURSE] Orientação a Objeto e UML

DC – I – Colaboração

CSE-310

Page 42: [CRASHCOURSE] Orientação a Objeto e UML

DC – I – Tempo

CSE-310

Page 43: [CRASHCOURSE] Orientação a Objeto e UML

Exemplo Diagrama de classes

• As escolas de magia formam vários bruxos em um determinado ano. Uma escola contém um nome único, uma data de fundação, e o nome de um fundador. A escola é formada por várias casas que são caracterizadas pelo nome único e mascote. Um aluno bruxo ao entrar na escola é selecionado para morar em uma casa pelo chapéu seletor. Os alunos bruxos são caracterizados pelo nome, data de nascimento, CodEscola único e varinha que também é única. Os alunos compram materiais escolares nas lojas do beco diagonal. As lojas são caracterizadas pelo nome único e dono. Os materiais escolares são caracterizados por um preço e podem ser espécies de animais, ingredientes de poções e objetos mágicos. Os animais são identificados pela espécie, os ingredientes de poções pelo nome único, e o objeto mágico pelo nome e fabricante. Um aluno pode apenas ter um único espécie de estimação, mas a mesma espécie pode ser de vários alunos. Um aluno pode fazer um feitiço usando um ou mais objetos mágicos e um ou mais ingredientes de poções. Os alunos recebem um valor de pontos em uma determinada data. Existe uma tabela de pontuações podem ser positivas quando executam um triunfo, mas podem ser negativas quando realizam um mau-feito. Todas as pontuações possuem um valor mínimo e um valor máximo. Na escola existem vários professores bruxos que são caracterizados pelo número da varinha único, nome, data nascimento. Para cada casa existe um único professor responsável e um único monitor aluno bruxo. Uma casa disputam torneios de quadribol contra outra casa, sendo que nessa disputa existem uma quantidade pontos para cada casa. Os professores ministram uma ou mais disciplinas em um determinado ano. Os alunos frequentam as disciplinas ministradas pelos professores e no final do ano recebem o conceito de aprovados ou reprovados. As disciplinas possuem nome único, uma ementa. Uma escola pode enfrentar duas outras escolas em um torneio tribruxo, sendo que para cada escola existe um único representante nessa disputa.

• Construa o diagrama de classes e implemente em uma linguagem de programação orientada à objetos.

CSE-310