Baixe o app para aproveitar ainda mais
Prévia do material em texto
ANÁLISE E PROJETO DE SOFTWARE Socorro Vânia Alves Socorro.vania@gmail.com O que veremos hoje? FUNDAMENTOS DO PARADIGMA OO Definição de Paradigma Abstração Objeto (identidade, estado, comportamento) Classes (relacionamentos) Herança Encapsulamento Polimorfismo O que vimos antes... Análise e projeto acontecem dentro de um processo Análise: consiste em entender o problema informação do cliente Projeto: consiste em modelar a solução informação para o programador Nesta disciplina focamos em Análise e Projeto OO Análise OO: objetos do domínio Projeto OO: objetos lógicos Os modelos OO utilizam o Paradigma da Orientação a Objetos O Paradigma da Orientação a Objetos O que é um Paradigma? Um Paradigma é uma forma de abordar um problema O Paradigma da Orientação a Objetos O mundo real é formado de coisas. Como exemplos de coisas podem-se citar um cliente, uma loja, uma venda, um pedido de compra, um fornecedor, um aluno, etc. No paradigma da orientação a objetos, essas coisas do mundo real são denominadas objetos Objetos do mundo real transformam-se em objetos no software O Paradigma da Orientação a Objetos Portanto, o POO visualiza e representa o mundo real como um conjunto de objetos que interagem entre si para que determinadas operações sejam realizadas A perspectiva empregada é de objetos Obj 1 Obj 2 Obj 4 Obj 3 O Paradigma da Orientação a Objetos A ênfase é identificar e descrever objetos ou conceitos do domínio do problema Ou em outras palavras é identificar objetos lógicos de software que poderão ser eventualmente implementados usando uma linguagem de programação OO O Paradigma da Orientação a Objetos Cada objeto realiza tarefas específicas. É através da interação/cooperação entre os objetos que uma tarefa computacional é realizada. Obj 1 Obj 2 Obj 4 Obj 3 O Paradigma da Orientação a Objetos O Paradigma da Orientação a Objetos Diferentemente da análise e projeto estruturados, na orientação a objetos o sistema é visto como um conjunto de objetos que interagem para realizar funções Uma nova maneira de pensar o sistema de software O Paradigma da Orientação a Objetos O Paradigma da Orientação a Objetos Paradigma Estruturado x Paradigma OO O Paradigma da Orientação a Objetos Paradigma Estruturado x Paradigma OO Análise de um Jogo de Futebol Passar a bola Fazer Gol Cobrar lateral Cobrar tiro de meta Diblar o jogador Cobrar falta Marcar Penalt Jogador Juiz Bola Campo Paradigma Estruturado Paradigma OO O Paradigma da Orientação a Objetos Bases do Paradigma da Orientação a Objetos Correspondência com o mundo real Modularidade dos componentes Objetos com finalidade própria Permite a combinação destes objetos Alta coesão interna Fácil ampliação do objeto Permite reuso dos objetos Encapsulamento Por que Orientação a Objetos Mas porque usar OO? Porque OO é um modo de pensar a respeito dos problemas utilizando conceitos do mundo real Hoje sabemos que OO traz diversos benefícios como Diminuição do tempo e custo de desenvolvimento Reutilização de código Facilidade de manutenção Maior grau de abstração Maior encapsulamento Por que Orientação a Objetos Mas porque usar OO? OO não se limita apenas a programação Existem hoje: Linguagem OO Banco de Dados OO Metodologia de desenvolvimento OO Modelagem OO O Paradigma da Orientação a Objetos Quais os conceitos/princípios fundamentais do POO? Abstração Objetos, atributos, operações Classes Encapsulamento Polimorfismo Herança outros... O Paradigma da Orientação a Objetos Quais os conceitos/princípios fundamentais do POO? Pilares do POO O Paradigma da Orientação a Objetos Abstração É o processo mental de extrair as características essenciais de um objeto ou entidade e ignorar os aspectos não relevantes para o enfoque considerado. Consiste em ignorar aspectos não relevantes O Paradigma da Orientação a Objetos O Paradigma da Orientação a Objetos Abstração Serviços e atributos aplicáveis a objetos dentro de um determinado contexto O Paradigma da Orientação a Objetos Abstração É considerada a habilidade de modelar características do mundo real do problema que o analista esteja tentando resolver Ato de separa um ou mais elementos de uma totalidade complexa A abstração é necessária para se ter um modelo fiel da realidade sobre a qual se possa operar O processo de abstração é fundamental para o desenvolvimento de software orientados a objetos O Paradigma da Orientação a Objetos Exemplo de Abstração Problema: determinar a media final de um aluno Aspectos relevantes: suas notas, assiduidade, participação durante as aulas Aspectos irrelevantes: meio de transporte utilizado, procedência escolar, interesses Conceitos da Orientação a Objetos Como o trabalho inicia... Conceitos da Orientação a Objetos O primeiro passo consiste em identificar os Objetos no domínio do problema Conceitos de Orientação a Objetos Objeto é uma abstração que representa uma entidade do mundo real Os objetos do sistema são aqueles que possuem significado para o software Objetos Conceitos de Orientação a Objetos Exemplos de Objetos Conceitos de Orientação a Objetos Objeto pode ser algo concreto (cliente, carro) ou abstrato (conta, transação bancária, histórico) Objetos Conceitos de Orientação a Objetos Exemplos de Objetos Conceitos de Orientação a Objetos Objetos possuem três propriedades: Identidade Estado definido pelo conjunto de atributos do objeto Comportamento definido por suas operações/métodos/serviços Conceitos de Orientação a Objetos Objetos possuem três propriedades: Conceitos de Orientação a Objetos Exemplos: Objeto Aluno Estado: nome, matricula, nota, RG, etc. Comportamento: fazer matricula, trancar matricula, etc. Objeto Conta Corrente Estado: numero, saldo, data de criação, etc. Comportamento: sacar, depositar, transferir, etc. Objetos possuem três propriedades: Conceitos de Orientação a Objetos Identidade Identidade é o nome do objeto. A identidade identifica de forma única um objeto, independente dos valores de seus atributos. A Identidade significa que cada objeto é único no sistema. Conceitos de Orientação a Objetos Estado O estado de um objeto é definido pelo conjunto de propriedades do objeto (os atributos) e de suas relações com os outros objetos É algo que muda com o tempo, por exemplo, um objeto turma pode estar no estado aberto ou fechado. Inicia no estado aberto e fecha quando 10 alunos fazem inscrição Conceitos de Orientação a Objetos Atributos São dados para os quais cada objeto em uma classe tem seu próprio valor Conceitos de Orientação a Objetos Atributos do Objeto Carro Conceitos de Orientação a Objetos Conceitos de Orientação a Objetos Padrões para Nomes de Atributos Sem hífen ou espaços Sem preposições (de, para, do, com, etc.) 1ª letra minúscula (parao caso de vários nomes, a 1ª letra dos demais nomes devem ser maiúsculas) Conceitos de Orientação a Objetos Comportamento (operações ou Métodos) É implementado por um conjunto de operações ou métodos existentes em um objeto Diz respeito a que operações são realizadas por um objeto, ou seja, o que o objeto é capaz de fazer Lógica contida em um objeto para designar lhe um comportamento Conceitos de Orientação a Objetos Conceitos de Orientação a Objetos Conceitos de Orientação a Objetos Pessoa comer() Andar() Falar() Professor leciona() corrigeProva() Aluno assisteAula() fazProva() Em um diagrama de classes os métodos são representados conforme indicado na figura ao lado Conceitos de Orientação a Objetos Padrões para Nomes de Operações Sem hífen ou espaços Sem preposições (de, para, do, com, etc.) Se possível colocar Verbo+Sujeto 1ª letra minúscula (para o caso de vários nomes, a 1ª letra dos demais nomes devem ser maiúsculas) Conceitos de Orientação a Objetos Dicas Identificar o estado e o comportamento de objetos do mundo real é o primeiro passo para começar a analise e o projeto OO. Observe um objeto e pergunte: Quais os possíveis estados que esse objeto pode estar? Ou seja, quais são os atributos ou propriedades ou dados que ele apresenta e pode armazenar? Quais os possíveis comportamentos que ele pode executar? Ou seja, quais as operações que podemos realizar com esses dados? O Paradigma da Orientação a Objetos Classes Estamos sempre identificando objetos ao nosso redor. Eles são classificados em grupos, de acordo com suas características, ou seja, os objetos são separados em classes Classe Cachorro Conceitos de Orientação a Objetos Classes É a descrição formal de um conjunto de objetos que possuem estados semelhantes (mesma lista de atributos) e comportamento comum (mesmas operações) Uma classe pode ser vista como um esqueleto/modelo para criar objetos. Conceitos de Orientação a Objetos Classes Fazendo uma analogia uma classe é como se fosse um gabarito, uma planta de uma casa. As casas criadas a partir da planta seriam os objetos Conceitos de Orientação a Objetos Classes Conceitos de Orientação a Objetos Classes Uma classe é constituída por objetos que obedecem à mesma especificação Um objeto também é chamado de instância da classe Conta classe Objeto 1 Objeto 2 Objeto 3 A classe conta tem os atributos numero, cliente, sado e limite Conceitos de Orientação a Objetos Pessoa nome endereco telefone dataNascimento altura registrar() pagar() Classe Maria Pedro A T R I B U T O S M E T O D O S Classes Na definição da classe são especificados seus atributos e métodos Conceitos de Orientação a Objetos Classes A estrutura de um software é formada pelas classes do sistema Conceitos de Orientação a Objetos Classes Em Java a definição de uma classe segue o padrão indicado abaixo: Pessoa nome idade falar() andar() Java Conceitos de Orientação a Objetos Símbolos para Classes Uma classe é representada por um retângulo dividido em três partes Conceitos de Orientação a Objetos Classes Conceitos de Orientação a Objetos Classes Conceitos de Orientação a Objetos Classes Conceitos de Orientação a Objetos Classes Conceitos de Orientação a Objetos Padrões para Nomes de Classes Nomes no singular (substantivo) Sem hífen ou espaços Sem preposições (de, para, do, com, etc.) Para vários nomes usar a 1ª letra maiúscula e demais minúsculas Conceitos de Orientação a Objetos Conceitos de Orientação a Objetos Conceitos de Orientação a Objetos Classes Dica Classes devem encerrar uma só abstração do mundo real. Por exemplo, uma classe estudante contendo também o histórico do estudante não é uma boa solução. Melhor é dividi-la em duas classes: estudante e histórico. Conceitos de Orientação a Objetos Relacionamentos entre Classes Classes podem estar conectadas por algum tipo de relacionamento. Podem ser: Associação simples (binária) Agregação Composição Generalização/Especialização (herança) Associação Reflexiva (estudaremos mais tarde) Associação Ternária (estudaremos mais tarde) Dependência (estudaremos mais tarde) Realização (estudaremos mais tarde) Conceitos de Orientação a Objetos Associações simples entre Classes Associações simples representam que existe alguma conexão entre duas classes, de tal forma que uma deve manter alguma referencia a outra Relação do tipo tem um entre objetos Associações simples são representadas na forma de uma linha cheia conectando as duas classes, onde pode aparecer o nome do relação ou o nome dos papéis As extremidades da associação podem possuir uma multiplicidade No relacionamento de associação aparecem várias multiplicidades (ex: 1, 0..1, 0..*) Conceitos de Orientação a Objetos Associações simples entre Classes Multiplicidade Representam a informação dos limites inferior e superior da quantidade de objetos aos quais outro objeto pode se associar. Cada associação em um diagrama de classes possui duas multiplicidades, uma em cada extremos da linha de associação. Conceitos de Orientação a Objetos Associações simples entre Classes Os objetos envolvidos apresentam existências independentes, mas existe uma ligação (associação) entre eles Conceitos de Orientação a Objetos Associações simples entre Classes Os objetos envolvidos apresentam existências independentes, mas existe uma ligação (associação) entre eles nome endereço empresa pessoa nome CPF endereço empre- gado empre- gador * 1 Nome do papel Nome do papel Conceitos de Orientação a Objetos Associações simples entre Classes Os objetos envolvidos apresentam existências independentes, mas existe uma ligação entre elas Conceitos de Orientação a Objetos Associações simples entre Classes Os objetos envolvidos apresentam existências independentes, mas existe uma ligação entre elas Conceitos de Orientação a Objetos Agregação e Composição A ideia de agregação e composição estabelece a criação de novas classes de objetos a partir da junção de classes já existentes Conceitos de Orientação a Objetos Agregação É um tipo especial de associação (ou relacionamento) A agregação representa um relacionamento “todo-parte”, ou seja, uma das classes representa o todo, enquanto outra representa a parte Conceitos de Orientação a Objetos Agregação A agregação mostra o relacionamento entre um objeto composto (todo) e os objetos que o compõem (partes ou componentes) Uma classe agrega outra (não exclusivamente) Dependência fraca entre as classes Conceitos de Orientação a Objetos Agregação Como visto antes, a associação simples estabelece uma ligação entre as classes, mantendo a independência de vida das mesmas. As classes existem por si só. Posso acabar com o relacionamento, sem prejudicar a existência de cada classe. Por exemplo, ao ligar por associação a classe Prontuário à classeExame, crio um relacionamento que representará os exames solicitados naquela consulta Conceitos de Orientação a Objetos Agregação No caso da agregação, uma classe é enxergada como parte de outra, indicando na fase de implementação, que para se ter acesso ao comportamento dos objetos-partes devemos fazê-lo por meio dos objetos-todo. Na agregação desenhamos um losango (diamante) junto à classe que representa o “todo” Conceitos de Orientação a Objetos Agregação Uma Pétala não é um tipo de Flor. Uma Pétala é uma parte de uma Flor. Flor Caule Raiz Pétala notação Conceitos de Orientação a Objetos Agregação Conceitos de Orientação a Objetos Agregação Conceitos de Orientação a Objetos Agregação Conceitos de Orientação a Objetos Agregação Conceitos de Orientação a Objetos Agregação https://www.caelum.com.br/apostila-java-orientacao-objetos/orientacao-a-objetos-basica/#4-9-continuando-com-atributos Conceitos de Orientação a Objetos Agregação Conceitos de Orientação a Objetos Composição É também um relacionamento do tipo “todo-parte” Entretanto, é uma variação mais poderosa da agregação, indicando que a classe parte pertencerá só e somente só à classe todo, sendo esta responsável pela criação e destruição de suas partes. Dependência forte entre as classes Graficamente, basta preencher o losango (diamante) junto à classe-todo. Conceitos de Orientação a Objetos Composição ContaBancaria Transação Conceitos de Orientação a Objetos Composição Conceitos de Orientação a Objetos Diferença entre Agregação e Composição Algumas dicas para se identificar um relacionamento como uma agregação ou composição: Se você puder dizer no relacionamento de associação que uma classe é “parte de”, “contém” ou “pertence à” outra classe, então estamos diante de uma agregação ou composição; Se as partes não podem ser divididas, estamos diante de uma composição. Caso contrário, temos uma agregação. Se o ciclo de vida das partes estão atreladas ao ciclo de vida do todo, temos uma composição; Se a multiplicidade do todo é 1 ou 0..1, temos uma composição; Se a multiplicidade do todo puder ser maior do que 1, temos uma agregação. Conceitos de Orientação a Objetos Generalização/Especialização Tipo de relacionamento entre uma classe e uma ou mais versões refinadas dela (herança) Esse tipo de relacionamento é chamado também de relacionamento “é-um-tipo-de” Cada instancia de uma subclasse é tambem uma instancia da superclasse Conceitos de Orientação a Objetos Herança - Generalização e Especialização Estudante e trabalhador é um tipo de Pessoa Conceitos de Orientação a Objetos Generalização e Especialização Conceitos de Orientação a Objetos Herança Mecanismo simples e poderoso do POO que permite que uma nova classe seja descrita a partir de uma classe já existentes É um mecanismo que permite a uma classe herdar todo o comportamento e os atributos de outra classe Classe mãe: superclasse, classe base Classe filha: subclasse, classe derivada Classe filha (mais especifica) herda atributos e métodos da classe mãe (mais geral) Classe filha possui atributos e métodos próprios Conceitos de Orientação a Objetos Herança Conceitos de Orientação a Objetos Herança Conceitos de Orientação a Objetos Herança Pessoa comer() Andar() Falar() Professor leciona() corrigeProva() Aluno assisteAula() fazProva() Conceitos de Orientação a Objetos Herança Conceitos de Orientação a Objetos Herança Conceitos de Orientação a Objetos Herança Conceitos de Orientação a Objetos Herança Conceitos de Orientação a Objetos Herança em Java Conceitos de Orientação a Objetos Herança O uso da herança permite criar classes mais genéricas ou mais específicas A herança aumenta a capacidade de reutilização das classes Conceitos de Orientação a Objetos Mecanismo da Herança Entre uma classe e a sua superclasse é estabelecida uma relação de especialização que estabelece as seguintes propriedades entre uma subclasse B e a sua superclasse A: B herda de A todas os atributos e métodos (exceto os privados) B pode definir novos atributos e novos métodos próprios B pode redefinir atributos e métodos herdados Conceitos de Orientação a Objetos Conceitos de Orientação a Objetos Encapsulamento Uma das ideias mais importantes da OO é o encapsulamento Encapsular significa esconder a implementação dos objetos, isto é, a sua estrutura interna Objetos devem esconder a sua complexidade Conceitos de Orientação a Objetos Encapsulamento Significa separar os aspectos externos de um objeto dos seus detalhes internos de implementação Ocultar partes independente da implementação, permitindo construir partes invisíveis ao mundo exterior Objetos devem esconder a sua complexidade Conceitos de Orientação a Objetos Encapsulamento Exemplo: Conceitos de Orientação a Objetos Encapsulamento Esconde a implementação interna da especificação externa Clientes conhecem somente a interface Clientes dependem da interface e não da implementação Conceitos de Orientação a Objetos Encapsulamento Objetos possuem atributos e métodos (operações) Estes devem estar armazenados no próprio objeto. Isso significa que eles devem estar encapsulados no objeto Exemplo: Conceitos de Orientação a Objetos Encapsulamento O mecanismo de encapsulamento serve para controlar o acesso aos atributos e métodos de uma classe. É uma forma eficiente de proteger os dados manipulados dentro da classe O encapsulamento proíbe a visualização interna de um objeto Conceitos de Orientação a Objetos Encapsulamento - Visibilidade (não recomendável) Interface Conceitos de Orientação a Objetos Encapsulamento - Visibilidade Em Java Conceitos de Orientação a Objetos Encapsulamento Um objeto é uma capsula que possui: • Dados privados • Um conjunto de métodos privados • Uma interface (API) constituída por métodos públicos Conceitos de Orientação a Objetos Encapsulamento - Visibilidade Com o encapsulamento um objeto determina a permissão que outros objetos terão para acessar seus membros (atributos e métodos) Um objeto nunca deve manipular/acessar diretamente os atributos de outro objeto A manipulação (acesso) deve ser feita via métodos, garantido assim o encapsulamento Para isso, normalmente declara-se os atributos de uma classe como privados (ocultados) ou protegidos Conceitos de Orientação a Objetos Encapsulamento - Visibilidade Portanto, atributos devem ser associados à métodos e só devem ser acessados por estes. Ou seja, a única forma de conhecer ou alterar os atributos de um objeto é por meio de seus métodos. Exemplo: Atributos da classe Cliente não devem ser acessados por classes externas, a menos que explicitamente permitido Conceitos de Orientação a Objetos Encapsulamento - Visibilidade Em Java Conceitos de Orientação a Objetos Encapsulamento - Visibilidade Alguns graus de visibilidade: Pública: acessível a todo o sistema Privada: acessível somente dentro da classe Protegida: acessível dentro da classe e suas subclasses Pacote: acessível às classes de um mesmo pacote Indicam o nível de acesso aos componentes internos de uma classe Conceitos de Orientação a Objetos Encapsulamento - Visibilidade Conceitos de Orientação a Objetos Encapsulamento - Visibilidade Modificadores de visibilidade (interface) Conceitos de Orientação a Objetos Encapsulamento - Visibilidade Conceitos de Orientação a Objetos Encapsulamento - Interface Na terminologia da orientação a objetos, diz-se que um objeto possui uma interface Em termos bastante simples, a interface de um objeto é o que ele conhece e o que ele sabe fazer A interface é constituída pela lista de serviços (métodos públicos) fornecidos por um objeto Através do encapsulamento, a única coisa que um objeto precisa saber para pedir a colaboração de outro objeto é conhecer a sua interface. Isso contribui para a autonomia dos objetos. A definição da interface é essencial para o bom funcionamento da classe Conceitos de Orientação a Objetos Encapsulamento - Mensagens Um objeto que precise da colaboração de outro objeto para realizar alguma tarefa simplesmente envia uma mensagem a este último O método que o objeto requisitado usa para realizar a tarefa não é conhecido internamente pelos objetos requisitantes O objeto requisitante precisa conhecer quais as tarefas que um outro objeto sabe fazer, ou seja, conhecer a interface do objeto a ser requisitado. Para tanto, a classe do objeto declara o seu comportamento que será visível aos objetos requisitantes Conceitos de Orientação a Objetos Encapsulamento - Mensagens A interface de um objeto define as mensagens que ele pode receber. Cada objeto envia mensagens a outros objetos para realizar certas tarefas, sem se preocupar em como as tarefas são realizadas. Pelo princípio do Encapsulamento, a implementação de um objeto requisitado não importa para um objeto requisitante. Conceitos de Orientação a Objetos Encapsulamento - Mensagens O acesso é realizado por intermédio de mensagens trocadas entre os objetos Métodos Públicos da interface Atributos e Métodos privados Objeto requisitante Conceitos de Orientação a Objetos Encapsulamento - Mensagens A comunicação entre os objetos ocorre pela troca de mensagens Uma mensagem é a execução de uma operação Uma mensagem pode ou não enviar parâmetros para outro objeto, bem como receber ou não uma resposta do mesmo Conceitos de Orientação a Objetos Encapsulamento - Mensagens O objeto que receber a mensagem responderá através da seleção e execução de um método que faz parte de seu comportamento Após a execução, o controle volta para o objeto que enviou a mensagem Conceitos de Orientação a Objetos Encapsulamento Vantagens: Manutenção: Permite alterações sem afetar demais partes do sistema, ou seja, torna o sistema mais independente, sem efeitos colaterais Modularidade: o código é independente de outros objetos Clareza e Legibilidade Facilita o Reuso Encapsulamento Conceitos de Orientação a Objetos Polimorfismo POLI (muitas) + MORPHOS (formas) O conceito está estritamente relacionado com Herança O polimorfismo ocorre quando um método definido no ancestral é redefinido no descendente com um comportamento interno diferente Conceitos de Orientação a Objetos Polimorfismo Conceitos de Orientação a Objetos Polimorfismo Conceitos de Orientação a Objetos Polimorfismo Conceitos de Orientação a Objetos Polimorfismo Um mesmo tipo de objeto, sob certas condições, pode realizar ações diferentes ao receber uma mesma mensagem. Ou seja, objetos podem ter comportamentos diferentes ao mesmo estímulo É um mecanismo que permite que os objetos tenham muitas formas ao longo do software O Polimorfismo permite projetar e implementar sistemas que são facilmente extensíveis Conceitos de Orientação a Objetos Polimorfismo Conceitos de Orientação a Objetos Polimorfismo area() { lado * lado} area() { pi * raio * raio} Quadrado Um método pode ser executada de diferentes maneiras de acordo com o objeto que fez a chamada Os objetos agem de forma diferenciada mesmo que possuam a mesma origem Conceitos de Orientação a Objetos Polimorfismo Conceitos de Orientação a Objetos Polimorfismo O Polimorfismo pode ser de dois tipos: Sobrecarga de método: a utilização de sobrecarga de métodos realiza a tarefa com distintos parâmetros de entrada. Ex.: pode ter dois métodos chamado com o mesmo nome, mas com comportamentos diferentes e parâmetros diferentes Conceitos de Orientação a Objetos Polimorfismo O Polimorfismo pode ser de dois tipos: Sobrescrita de método: métodos com o mesmo nome, mesma assinatura, comportamentos diferentes, mas em classes diferentes e originadas de uma mesma classe pai Conceitos de Orientação a Objetos Polimorfismo Na sobrescrita de método podemos redefinir a implementação de um método que já foi definido e implementado em uma classe superior na hierarquia de herança FIM
Compartilhar