[CRASHCOURSE] Orientação a Objeto e UML
-
Upload
christopher-cerqueira -
Category
Education
-
view
123 -
download
1
description
Transcript of [CRASHCOURSE] Orientação a Objeto e UML
Orientação a objeto
Crash-course
MSc. Eng. Christopher S. Cerqueira
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
Orientação a Objeto
CSE-310
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
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/
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)
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
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
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
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
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
Pacotes • Organiza as classes em grupos
• Hierarquiza(fisicamente) o projeto
• Feels de um endereço web.
CSE-310
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
Relações
CSE-310
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
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
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
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
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
Associação - Multiplicidade
• Quando um objeto recebe múltiplas instancias de
outro é necessário controlar por estruturas de
dados.
CSE-310
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
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
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
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
UML Diagramas
Looks
CSE-310
Hierarquia
CSE-310
http://pt.wikipedia.org/wiki/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
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
DE - Classes
CSE-310
DE - Objetos
CSE-310
DE - Componentes
CSE-310
DE - Instalação
CSE-310
DE - Pacotes
CSE-310
DE – Estrutura Composta
CSE-310
DE - Perfil
CSE-310
DC – Casos de uso
CSE-310
DC - Estados
CSE-310
DC - Atividades
CSE-310
DC – I – Sequência
CSE-310
DC – I – Interação
CSE-310
DC – I – Colaboração
CSE-310
DC – I – Tempo
CSE-310
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