O que é modelagem orientada a objetos? Descrição diagramática de algo a ser (ou que já foi) implementado em linguagem de programação Utilizam notações gráfica e textuais. Representam as partes essenciais de um sistema. Técnico Subsequente
Conhecer uma linguagem de modelagem UML, segunda versão Os quatorzes diagramas de UML Para que serve cada diagrama Técnico Subsequente
Exemplos de Modelos Orientados a Objetos Diagrama de Caso de Uso Técnico Subsequente
Exemplos de Modelos Orientados a Objetos Diagrama de Classes Técnico Subsequente
EXERCÍCIO EM SALA Observe a imagem abaixo, e diga quais objetos você consegue identificar? Técnico Subsequente
Objeto Um objeto pode ser real ou abstrato. Os objetos possuem informações (contém dados) e desempenham ações (possuem funcionalidade). No software OO: Um objeto é qualquer coisa, real ou abstrata, a respeito da qual armazenamos dados e os métodos que os manipulam. Identificar os atributos e o comportamento de objetos do mundo real é o primeiro passo para começar a pensar em programação OO.
Objeto Exemplo: Uma fatura; Uma organização; Um vôo de avião; Uma pessoa; Um lugar.
Objeto Analise os seguintes objeto e pergunte: Quais as características que esse objeto pode ter? Quais os possíveis comportamentos que ele pode executar?
Abstração Habilidade mental que permite os seres humanos visualizarem os problemas do mundo real com vários graus de detalhes, dependendo do contexto corrente do problema. Nós aprendemos a abstrair desde pequenos, criamos conceitos, assumimos verdades, entendemos o mundo de acordo com a nossa capacidade intelectual.
Visão do Projeto
Classes Uma classe é uma implementação de um tipo de objeto. Uma classe especifica uma estrutura de dados e os métodos operacionais permissíveis que se aplicam a cada um de seus objetos. As classes de programação são projetos de um objeto, aonde têm características e comportamentos, ou seja, permite armazenar propriedades e métodos dentro dela.
Classe Pessoa Técnico Subsequente
Classe Banco Atributos Métodos
Idade e Peso são atributos da Atributos da Classe Atributos identificam características da classe, ou seja, “o que a classe tem”, por exemplo, todo animal possui uma idade e peso. São os elementos que definem a estrutura de uma classe, ou seja suas características. Idade e Peso são atributos da classe Animal public $valor1; public $valor2;
Métodos da Classe • Métodos são as ações que a classe será capaz de realizar, podemos relacionar os métodos ao “o que o objeto da classe pode fazer”. Por exemplo, um animal pode andar, grunir, etc... Os métodos determinam o comportamento dos objetos de uma classe. Os métodos são similares às funções e procedures do universo da programação estruturada. function soma(){ echo 'Soma:'.$this->valor1 += $this->valor2. "<br> "; } Andar() e Grunir() são métodos da classe
Instância Representa cada ocorrência de um objeto formados a partir de uma classe. É o mesmo que criar o objeto a partir da classe Exemplo PHP OO $calcular = new Operacoes(); $calcular->valor1=50; $calcular->valor2=100; Técnico Subsequente
DIAGRAMA DE CLASSE Médio Integrado
Diagrama de Classes Revisando... Introdução – Diagrama de classes Elementos do diagrama de classes Exemplo: Sistema de matrícula © LES/PUC-Rio
Introdução – Diagrama de Classes Mostra um conjunto de classes e seus relacionamentos. É o diagrama central da modelagem orientada a objetos. Turma código: Texto sala: Texto horario: Horario estaAberta() definirProfessor(professor) incluirAluno(aluno) está-matriculado-em é-ministrada-por Aluno nome: Texto matrícula: Inteiro definirNome(nome) obterNome() definirMatricula(matricula) obterMatricula Professor nome: Texto titulação: Texto definirNome(nome) obterNome() definirTitulacao(titulo) obterTitulacao © LES/PUC-Rio
Elementos – Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associação Agregação Composição Generalização Dependência © LES/PUC-Rio
Elementos – Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associação Agregação Composição Generalização Dependência © LES/PUC-Rio
Elementos – Diagrama de Classes Graficamente, as classes são representadas por retângulos incluindo nome, atributos e métodos. Devem receber nomes de acordo com o vocabulário do domínio do problema. É comum adotar um padrão para nomeá-las Ex: todos os nomes de classes serão substantivos singulares com a primeira letra maiúscula Nome_da_classe atributo1 atributo2 ... metodo1 metodo2 metodo3 © LES/PUC-Rio
Elementos – Diagrama de Classes Atributos Representam o conjunto de características (estado) dos objetos daquela classe Visibilidade: + público: visível em qualquer classe de qualquer pacote # protegido: visível para classes do mesmo pacote - privado: visível somente para classe Exemplo: + nome : String Funcionario codigo: int +nome:String cpf: int #salario: float + Gravar() + Alterar() + Excluir() © LES/PUC-Rio
Elementos – Diagrama de Classes Métodos Representam o conjunto de operações (comportamento) que a classe fornece Visibilidade: + público: visível em qualquer classe de qualquer pacote # protegido: visível para classes do mesmo pacote - privado: visível somente para classe Exemplo: - getNome() : String © LES/PUC-Rio
Atividade... Possuímos 2 classes, ClasseA e ClasseB. Ambas estão com as operações(métodos) definidas como pública. O que significa isso? Qual visibilidade devemos definir para que a operação2 e a operação3 fiquem visíveis apenas para a própria classe? Qual visibilidade (diferente de pública) devemos definir para que a operação1 fique visível para a ClasseC? ClasseA atributo1:int atributo2:int + operacao1( ) + operacao2( ) ClasseA atributo1:int atributo2:int + operacao1( ) + operacao3( ) ClasseC
Exercício Avaliativo – 2,0 pontos Represente, por meio de um diagrama de classes, o fato de uma empresa possuir diversos departamentos, em cada um destes estão lotados diversos funcionários. Cada departamento possui um chefe que também deve ser lotado no respectivo departamento.
Exemplo prático Técnico Subsequente
Técnico Subsequente
Elementos – Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associação Agregação Composição Generalização Dependência © LES/PUC-Rio
Elementos – Diagrama de Classes Relacionamentos Os relacionamentos possuem: Nome: descrição dada ao relacionamento (faz, tem, possui,...) Sentido de leitura Multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7 Tipo: associação (agregação, composição), generalização e dependência Papéis: desempenhados por classes em um relacionamento © LES/PUC-Rio
Elementos – Diagrama de Classes (Multiplicidade) Especifica o número de objetos de cada classe envolvidos com a associação Relacionamentos nome multiplicidade sentido de leitura Pessoa 1..* trabalha para * Empresa empregado empregador Tipo: associação papéis © LES/PUC-Rio
Elementos – Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associação Agregação Composição Generalização Dependência © LES/PUC-Rio
Elementos – Diagrama de Classes Relacionamentos: Associação Uma associação é um relacionamento estrutural que indica que os objetos de uma classe estão vinculados a objetos de outra classe. Uma associação é representada por uma linha sólida conectando duas classes. Pessoa Empresa associação © LES/PUC-Rio
Elementos – Diagrama de Classes Relacionamentos: Associação Indicadores de multiplicidade: 1 Exatamente um 1..* Um ou mais 0..* Zero ou mais (muitos) * muitos 0..1 Zero ou um m..n Faixa de valores (por exemplo: 4..7) (Multiplicidade) Especifica o número de objetos de cada classe envolvidos com a associação multiplicidade Aluno 0..* Estuda apenas em 0..1 Curso associação © LES/PUC-Rio
Relacionamentos: Associação Exemplo: Um Estudante pode ser um aluno de uma Disciplina e um jogador da Equipe de Futebol Cada Disciplina deve ser cursada por no mínimo 1 aluno Um aluno pode cursar de 0 até 8 disciplinas © LES/PUC-Rio
Elementos – Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associação Agregação Composição Generalização Dependência © LES/PUC-Rio
Elementos – Diagrama de Classes Relacionamento: Agregação É um tipo especial de associação, onde uma classe faz parte da outra Utilizada para indicar “todo-parte” um objeto “parte” pode fazer parte de vários objetos “todo” todo parte 1 Item Pedido 1..* agregação © LES/PUC-Rio
Elementos – Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associação Agregação Composição Generalização Dependência © LES/PUC-Rio
Elementos – Diagrama de Classes Relacionamento: Composição É uma variante semanticamente mais “forte” da agregação A composição não vive sem o todo Exemplo Dependentes é parte de pessoa Pessoa Nome Fone Email listaEmprego():String Emprego Nome Area Salário calculaBonus():String Dependentes Nome Data de nascimento * 1 1 * Composição Agregação © LES/PUC-Rio
Elementos – Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associação Agregação Composição Generalização Dependência © LES/PUC-Rio
Elementos – Diagrama de Classes Relacionamento: Generalização É um relacionamento entre itens gerais (superclasses) e itens mais específicos (subclasses) Veículo superclasse “é um” “é um tipo de” Terrestre Aéreo subclasse © LES/PUC-Rio
Elementos – Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associação Agregação Composição Generalização Dependência © LES/PUC-Rio
Elementos – Diagrama de Classes Relacionamento: Dependência Representa que a alteração de um objeto (o objeto indepedendente) pode afetar outro objeto (o objeto dependente) Ex: Obs: A classe cliente depende de algum serviço da classe fornecedor A mudança de estado do fornecedor afeta o objeto cliente cliente fornecedor © LES/PUC-Rio
Exercício Avaliativo – Represente, por meio de um diagrama de classes, o fato de uma empresa possuir diversos departamentos, em cada um destes estão lotados diversos funcionários. Cada departamento possui um chefe que também deve ser lotado no respectivo departamento.
Exercício Avaliativo – 3,0 Uma loja que vende roupas possui um sistema capaz de controlar a venda e o estoque. Cada roupa possui um código de barras, um tamanho e o número de exemplares que a loja possui daquela roupa. Os clientes da loja são cadastrados pelo nome Faça um diagrama de classe. Técnico Subsequente
Exercício Avaliativo – 2,0 pontos Desenvolva o Diagrama de Classes para um sistema de cursos de informática equivalente ao módulo de matrícula de acordo com os seguintes fatos: Um curso pode ter muitas turmas, no entanto, uma turma se relaciona exclusivamente com um único curso. Uma turma pode ter diversos alunos matriculados, no entanto uma matrícula refere-se exclusivamente a uma determinada turma. Cada turma tem um número mínimo de matrículas para iniciar o curso. Um aluno pode realizar muitas matrículas, mas cada matrícula refere-se exclusivamente a uma turma específica e a um único aluno.
Técnico Subsequente