4.
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
oConceitos do mundo real
•Cria modelos do mundo real
•Estes modelos simulam o mundo real.
CSE-310
5.
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/
6.
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)
7.
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
8.
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
9.
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
10.
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.:
oUma pessoa (classe) tem os atributos nome, peso.
oJoão (objeto) é uma pessoa com nome “João” e peso “80kg”
•Uma classe não deve ter dois atributos com o mesmo nome.
•Obs.:
oAtributos estáticos – tem um único valor para todas as instâncias. No UML o atributo estático é sublinhado
oPode-se usar um valor inicial, caso tenha sido omitido.
CSE-310
11.
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
12.
Pacotes
•Organiza as classes em grupos
•Hierarquiza(fisicamente) o projeto
•Feels de um endereço web.
CSE-310
13.
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
15.
Ligações / Relações
•Os objetos se relacionam.
•Relacionamentos precisam ser modelados.
•Exs.:
oUm mago pode ser aluno ou professor
oUm mago joga um feitiço num monstro
oUm mago possui um pet.
oUma escola possui magos.
oUm mago possui uma varinha, e a varinha conhece seu mago.
oAlunos dependem dos professores para aprender
CSE-310
16.
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
17.
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
+ fei tico() :void
«property get»
+ getnome() :string
+ gettipo() :string
«property set»
+ setnome(string) :void
+ settipo(string) :void
Aluno
+ fei tico() :void
Professor
+ fei tico() :void
Um mago pode ser aluno ou professor
18.
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
19.
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
20.
Associação - Multiplicidade
•Quando um objeto recebe múltiplas instancias de outro é necessário controlar por estruturas de dados.
CSE-310
21.
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
22.
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) :voidEscola- nome :string+ ensina() :void «property get» + Getnome() :string «property set» + Setnome(string) :voidPet- nome :string- habilidade :string+ realizaHabilidade() :void «property get» + Getnome() :string+ Gethabilidade() :string «property set» + Setnome(string) :void+ Sethabilidade(string) :void+magos0..* +escola1+pet0..1+mago1
23.
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) :voidVarinha- nome :string+ feitico() :void «property get» + getnome() :string «property set» + setnome(string) :void+varinha1+mago1
24.
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
27.
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
28.
Diagramas comportamentais
•Diagrama de caso de uso
•Diagrama de estados
•Diagrama de atividades
•Diagramas de interação
oDiagrama de sequência
oDiagrama de interação
oDiagrama de colaboração
oDiagrama de tempo
CSE-310
43.
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
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.