modelagem de software orientado a objetos parte 1 – princípios de orientação a objetos...
TRANSCRIPT
Modelagem de SoftwareOrientado a Objetos
Parte 1 – Princípios de Orientação a Objetos
Continuação
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE SÃO PAULOCURSO DE ESPECIALIZAÇÃO EM ENGENHARIA DE SOFTWARE
Modelagem de SoftwareOrientado a Objetos
Prof. Maurício Nacib Pontuschka
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
O que é modelagem?
Um modelo é uma simplificação da realidade.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Objetivos da modelagem•Ajudar a visualizar o sistema como gostaríamos que ele fosse
•Permitir a especificação da arquitetura e comportamento de um sistema
•Fornecer padrões de desenvolvimento que serve como guia de construção do sistema
•Documentar as decisões tomadas durante o processo de desenvolvimento
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Por que modelar?
•Modelos de sistemas complexos são construídos porque nem sempre é possível compreendê-los em sua totalidade
•Modelos auxiliam o entendimento dos sistemas que construímos
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Importância da modelagem
Avião de papel Jato militar
Menos importante Mais importante
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
• Iniciam a codificação diretamente a partir das especificações do projeto.
• Trabalham durante horas e produzem mais código.• Falta de um plano de arquitetura de software.• Desenvolvimento fadado ao fracasso.
Muitas equipes de desenvolvimento desenvolvem seus sistemas como se estivessem construindo aviões de papel
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Por que modelar?
•A modelagem é uma tarefa comum em projetos bem sucedidos.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Model Driven Architecture (MDA)• Uma abordagem de utilizar modelos no desenvolvimento de software.
– Separar a especificação de uma operação dos detalhes da forma como o sistema utiliza os recursos da plataforma utilizada.
• Especificar um sistema independentemente da plataforma que o suportará.
• Especificar plataformas.• Escolher uma determinada plataforma para um sistema.• Transformar a especificação de um sistema específica para uma
determinada plataforma.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Pontos de visão do MDA
CIMCIM – Computational Independent ModelO foco está no ambiente do sistema e seus requisitos.
PIMPIM – Platform Independent ModelO foco está na operação do sistema, independentemente da plataforma.
PSMPSM – Platform Specific ModelO foco está na utilização detalhada do sistema em uma plataforma específica.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Quatro princípios da modelagem visual
•O modelo que é criado influencia na forma como o problema é atacado.
•Todo modelo pode ser expresso em vários níveis de precisão.
•Os melhores modelos são os mais próximos à realidade.
•Nenhum modelo único é suficiente.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Principio 1: A escolha do modelo é importante• Os modelos criados influenciam profundamente em como o problema é atacado e como a sua solução é elaborada.
Modelo de ProjetoModelo de Processo Modelo de Implantação
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Principio 2: Níveis de precisão podem ser diferenciados• Todo modelo pode ser expresso em diferentes níveis de precisão.
– Quem visualiza o modelo e por que precisam visualizá-lo?
Visão dos desenvolvedores
Visão dos consumidores
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Principio 3: Os melhores modelos estão ligados à realidade• Todos os modelos são simplificações da realidade.• Um bom modelo reflete características reais.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Principio 4: Nenhum modelo único é suficiente• Todo sistema (não trivial) é melhor abordado por um conjunto de modelos.
Visão deprocesso
Visão deImplantação
Visão lógica
Visão de Casos de Uso
Visão de Implementação
Usuário FinalFuncionalidade
ProgramadoresGestão de software
Performance, escalabilidade,acoplamento
Integradores de SistemasTopologia do sistema, entrega,
instalação, comunicação
Engenharia de Sistemas
Analistas/ProjetistasEstrutura
Próximos objetivos• Descrever uma abstração, encapsulamento,
modularidade e herança.• Descrever a estrutura física de uma classe.• Descrever o relacionamento entre uma classe e um
objeto.• Definir polimorfismo e generalização.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
• O que é um objeto?
• Quatro princípios da OO
• O que é uma classe?
• Polimorfismo e Generalização
• Organizando elementos de modelo
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Informalmente, um objeto representa uma entidade que pode ser física, conceitual ou de software.
Entidade física
Entidade conceitual
Entidade de software
Caminhão
Processo químico
Lista ligada
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Em uma definição mais formal:Um objeto é uma entidade com uma fronteira bem definida e uma identidade que encapsula estados e comportamento.
Estado é representado por atributos e relacionamentos.Comportamento é representado por operações, métodos e máquinas de estados.
Objeto
Operações
Atributos
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Objetos possuem estados
O estado de um objeto é a condição ou situação durante o ciclo de vida de um objeto o qual satisfaz algumas condições, executa alguma atividade ou aguarda algum evento. O estado de um objeto normalmente mudo ao longo do tempo.
Nome: J ClarkID Funcionário: 567138Contratação: 25 de Julho de 1991Área: Finanças
Nome: J ClarkID: 567138DtContr: 07/25/1991Area: Finance
Professor Clark
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Objetos possuem comportamentoO comportamento determina como um objeto age e reage. O comportamento observável de um objeto é modelado por um conjunto de mensagens que ele pode responder. (operações que o objeto executa).
Comportamento do Professor ClarkPublicar notas finaisAceitar oferta de cursoCorrigir notas
publ
icar
Notas
Fina
is()
aceitarOfertaDeCurso()
Professor Clark
corrigirNotas()
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Um objeto possui identidade
Cada objeto possui uma identidade única, mesmo que o estado do objeto seja idêncico ao de outro objeto.
Nome: “J Clark” Ensina: Biologia
Nome: “J Clark” Ensina: Biologia
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
• O que é um objeto?
• Quatro princípios da OO
• O que é uma classe?
• Polimorfismo e Generalização
• Organizando elementos de modelo
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Abst
raçã
o
Hier
arqu
ia
Orientação a Objetos
Enca
psul
amen
to
Mod
ular
idad
e
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Princípios Básicos de Orientação a Objetos
O que é abstração?São características essenciais de
uma entidade que a distingue de todos os outros tipos de entidade.
Define uma fronteira relativa à perspectiva do observador.
Não é uma manifestação concreta, denota a essência ideal de alguma coisa.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Estudante Professor
Oferta de curso (9:00h, segunda-quarta-sexta) Curso (ex: Álgebra)
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Exemplos de Abstação
Favorece a adaptabilidade
O que é encapsulamento? Esconde a implementação dos clientes Clientes dependem da interface.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Professor Clark precisa ser capaz de ministrar quatro turmas no próximo semestre.
publ
icar
Notas
()
aceitarOfertaDeCurso()
Professor Clark
setcargaMáxim
a()
Nome: J Clark
ID: 567138
DtContr: 07/25/1991
Disciplina: Finanças
CargaMáxima:4setCargaMáxima(4)
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Exemplo de Encapsulamento
O que é Modularidade?• Quebra algo complexo em partes
gerenciáveis. • Auxilia as pessoas a entender sistemas
complexos.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Exemplo de Modularidade
Por exemplo, quebrar um sistema complexo em módulos menores.
Sistema de cobrança
Sistema de registro de cursos
Sistema de catálogo de cursos
Sistema de gerenciamento de estudantes
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Menorabstração
Maiorabstração
Ativo
TítulosGovernamentais
Poupança
Conta Bancária
ContaCorrente
Ações
Valores Mobiliários
Apólices
Elementos em um mesmo nível hierárquico devem estar no mesmo nível de abstração.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
O que é hierarquia?
Representação de Objetos em UML
Um objeto é representado por um retângulo com um nome sublinhado.
J Clark : Professor
: Professor
Objeto “nomeado”
Objeto “anônimo”
Professor J Clark
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
• O que é um objeto?
• Quatro princípios da OO
• O que é uma classe?
• Polimorfismo e Generalização
• Organizando elementos de modelo
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
O que é uma classe?Uma classe é uma descrição de um conjuntode objetos que compartilham os mesmos atributos, operações, relacionamentos e semântica. • Um objeto é uma instância de uma classe.• Uma classe é uma abstração que:
evidencia características relevantes.suprime outras características.
ClasseCurso
PropriedadesNome
LocalizaçãoCarga horária
créditosHora de início
Hora de término
ComportamentoAdicionar estudanteRemover estudanteObter lista de nomesIndicar turma lotada
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Exemplo de Classes
Representando classes em UML• Uma classe é representada utilizando um retângulo com
três compartimentos:
– O nome da classe
– A estrutura (atributos)
– O comportamento (operações)
Professor- nome- ID : UniqueId- DTContr- status- disciplina- cargaMax
+ publicarNotasFinais()+ aceitarOfertaDecurso()+ setCargaMax()
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Relacionamento entre classes e objetos• Uma classe é uma definição abstrata de um objeto.
– Ela define a estrutura e o comportamento de cada objeto da classe.
– Se comporta como um padrão (template) para criação de objetos.
• Classes não são coleções de objetos.
Professor
Professor Meijer
Professor Torpie
Professor Allen
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
O que é um atributo?• Um atributo é uma propriedade nomeada de uma classe e
descreve um conjunto de valores que as instâncias desta propriedade podem assumir. Uma classe pode possuir um número qualquer de atributos inclusive nenhum.
Atributos
Estudante
-Nome- endereço- ID- nascimento
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Atributos em classes e objetos
Classe
Objetos
Estudante- nome- endereço- ID- nascimento
:Estudante
- nome = “M. Modano”- endereço = “123 Main St.”- ID = 9- nascimento = “03/10/1967”
:Estudante
- nome = “D. Hatcher”- endereço = “456 Oak Ln.”- ID = 2- nascimento = “12/11/1969”
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
O que é uma operação?• Um serviço que pode ser requisitado de um objeto para
afetar seu comportamento. Uma operação possui uma assinatura a qual define a forma e os parâmetros da operação.
• A classe pode ter nenhuma ou muitas operações.
operações
Estudante
+ getTitulação()+ addCalendario()+ getCalendário()+ delCalendário()+ possuiPreRequisitos()
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
• O que é um objeto?
• Quatro princípios da OO
• O que é uma classe?
• Polimorfismo e Generalização
• Organizando elementos de modelo
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
O que é polimorfismo? Habilidade de esconder muitas implementações por
trás de uma única interface.
Fabricante AFabricante B Fabricante C
Princípio OO:Encapsulamento
Controle Remoto
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Exemplo: Polimorfismo
Ação Título Fundo de Investimento
getValorCorrente()
instrumentoFinanceiro.getValorCorrente()
getValorCorrente()
getValorCorrente()
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
O que é sobrecarga?Em uma mesma classe pode possuir operações com o mesmo nome e parâmetros diferentes.Quando isso ocorre dizemos que este método foi sobrecarregado.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
O que é sobreposição?• Em uma hierarquia de classes caso exista um
método na sub-classe com a mesma assinatura de um método da classe pai, este se sobreporá o método da super-classe.
O que é Generalização?• Um relacionamento entre classes onde uma classe
compartilha sua estrutura e/ou seu comportamento de uma ou mais classes.
• Define uma hierarquia de abstrações na qual uma subclasse herda elementos de uma hierarquia de superclasses, recebendo como herança suas características e comportamento.– Herança simples.– Herança múltipla.
• É um relacionamento “é um”.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Exemplo: Herança SimplesUma classe é herança de outra.
CorrentePoupança
Superclasse (pai)
Subclasses(filha)
Relacionamento de
generalização
Ancestral
Conta
- balanço- nome- número
+ saque()+ criarDeclaração()
Descendentes
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Exemplo: Herança Múltipla
Uma classe pode ser herdeira de várias classes.
Use a herança múltipla somente quando realmente necessário e mesmo assim com muita atenção!
Voadores Animal
CavaloLoboPássaroHelicópteroAvião
Herança Múltipla
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
O que é Herança?
A herança alavanca as similaridades através das classes.
• Um subclasse herda os atributos, operações e relacionamentos da superclasse.
• Uma subclasse pode:– Adicionar atributos, operações e relacionamentos novos.
– Redefinir operações herdadas. (Use com cuidado!)
• Atributos, operações e relacionamentos, são mostrados no nível mais alto aplicável da hierarquia.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
• O que é um objeto?
• Quatro princípios da OO
• O que é uma classe?
• Polimorfismo e Generalização
• Organizando elementos de modelo
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
• Um mecanismo de proposta geral para organizar elementos em grupos.
• Um elemento de modelagem que pode conter outros elementos de modelagem.
• Um pacote pode ser usado:– Para organizar o modelo em desenvolvimento.
– Como uma unidade de gestão de configuração.
O que é Pacote?
University Artifacts
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Um pacote pode conter classesO pacote Artefatos da Universidade contém um pacote e cinco classes.
Artefatosda
Universidade
CursosOferecidos
Calendário
Professor
Curso
Estudante
Artefatosdos
estudantes
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Representação gráfica de um diagrama
<cabeçalho>
<conteúdo>
• Cada diagrama possui um quadro, um compartimento de cabeçalho no canto superior esquerdo e uma área de conteúdo.– Se o quadro não fornecer nenhuma informação adicional, este
pode ser omitido e a borda da área do diagrama fornecida pela ferramenta será o quadro indicado se necessário.
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Revisão• O que é um objeto?
• Quais são os quatro princípios de orientação a objetos? Descrever cada um.
• O que é uma classe? Como relacionar classes e objetos?
• O que é um atributo? Uma operação?
• Defina polimorfismo. Forneça um exemplo de polimorfismo.
• O que é generalização?
• Por que usar pacotes?
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Modelagem de Software Orientado a ObjetosPrincípios de Orientação a Objetos
Dúvidas?