920 likes | 1.11k Views
Análise e projeto de sistemas orientados a objetos. Professor : José Luiz Rodrigues Junior E-mail : jluizrj@uninove.br. UML-Unified Modeling Language. Desenvolvimento Rational software Microsoft Hewlett-Packard Oracle Sterling Unisys IBM MCI. UML-Unified Modeling Language.
E N D
Análise e projeto de sistemas orientados a objetos Professor : José Luiz Rodrigues Junior E-mail: jluizrj@uninove.br
UML-Unified Modeling Language • Desenvolvimento • Rational software • Microsoft • Hewlett-Packard • Oracle • Sterling • Unisys • IBM • MCI Análise o projetos de sistemas orientados a objetos
UML-Unified Modeling Language • Influenciada por vários métodos de análise e projeto orientados a objetos • Deriva particularmente de 3 notações: • OOD (Projeto orientado a objetos) – Grady Booch • OMT (Técnica de modelagem de objetos) - James Rumbaugh • OOSE(Engenharia de software orientada a objetos) - Ivar Jacobson Análise o projetos de sistemas orientados a objetos
Orientação a objetos • Significa organizar o mundo real como uma coleção de objetos • Alavancas • Evolução Tecnológica • Distribuição de Processamento • Tecnologia Cliente-Servidor • Internet • Java • Aplicações WEB Análise o projetos de sistemas orientados a objetos
Objetos - Definição • Objeto é uma entidade concreta, apesar da concepção ser abstrata • Agrupamento de características e ações de uma entidade • Características são representadas por atributos • Ações são representadas por métodos • Um conjunto de atributos e métodos, forma um objeto Análise o projetos de sistemas orientados a objetos
Objetos - Definição • Do ponto de vista da abstração, um objeto tenta não separar o que até então vinha sendo separado:Dados e funções. Análise o projetos de sistemas orientados a objetos
Objetos - Definição “um objeto é uma abstração de um conjunto de coisas do mundo real, sendo que: todas as coisas do mundo real em um conjunto - as instâncias - têm as mesmas características. Todas as instâncias são sujeitas e em conformidade às mesmas regras” “...um objeto representa uma entidade, item ou unidade individual, identificável, sendo real ou abstrato, com regras bem definidas no domínio do problema." Grady Booch Análise o projetos de sistemas orientados a objetos
Objetos - Exemplos • Coisas tangíveis O Livro “Modelagem de Objetos”, uma cadeira, uma pessoa, etc. • Incidente A copa do mundo de futebol (evento/ocorrência) • Interação O débito de R$ 100,00 na conta x (transação/contrato) no dia 20/01/2000 Em um Sistema Universitário, João da Silva é um estudante-objeto; ele assiste a diversos seminários-objeto e está cursando uma graduação-objeto. Análise o projetos de sistemas orientados a objetos
Objetos - Características • Um objeto possui três características básicas: • Estado • Comportamento • Identidade Análise o projetos de sistemas orientados a objetos
Finalidade da OO Análise o projetos de sistemas orientados a objetos
Objetos - estado • Entende-se como o seguinte conjunto: Os valores dos atributos e o status das operações que o objeto executou • Obviamente, um método executado ou a mudança de valor de algum atributo automaticamente muda seu estado anterior Análise o projetos de sistemas orientados a objetos
Objetos - estado • Objetos têm consciência do seu passado • Retém informações dentro de si mesmo por tempo indefinido, não “morrendo” quando termina a execução, ou seja, memoriza suas propriedades e valores associados. Essa característica chama-se “retenção de estado” Análise o projetos de sistemas orientados a objetos
Objetos - estado • Exemplo: Análise o projetos de sistemas orientados a objetos
Objetos - comportamento • Nenhum objeto existe isolado • Ele interage com outros objetos, atuando sobre estes, ou sofrendo ação dos mesmos. • O comportamento de um objeto é completamente definido pelas suas ações “Comportamento é como um objeto age e reage, nos termos das suas mudanças de estado e passagem de mensagens “ GradyBooch Análise o projetos de sistemas orientados a objetos
Objetos – estado e comportamento operações/métodos/interface (público) dados/propriedades/atributos (privado) A estrutura de dados armazena o estado de um objeto (valores dos atributos). As operações definem o comportamento do objeto, que é a forma como um objeto age e reage em termos de mudanças de estado e respostas às operações que sabe executar Análise o projetos de sistemas orientados a objetos
Objetos - comportamento • Mensagem • O comportamento de um objeto é função de seu estado, bem como das operações realizadas sobre ele, com certas operações tendo o efeito de alterar o estado do objeto • Trata-se de uma operação que um objeto executa sobre outro para obter uma reação • É o meio de comunicação entre objetos, isto é, é o estímulo para um determinado comportamento. Análise o projetos de sistemas orientados a objetos
Objetos - Mensagem • Para que um objeto (chamado de emissor) envie uma mensagem para outro objeto (chamado alvo), deve-se conhecer três coisas: • 1.O identificador do objeto alvo • 2. O nome do método do objeto alvo que deseja executar • 3. Quaisquer informações suplementares (argumentos) que o objeto alvo necessitará na execução de seu método Análise o projetos de sistemas orientados a objetos
Objetos - operações • Uma operação denota um serviço que uma classe oferece a seus clientes • Pode-se executar quatro tipos de operações sobre um objeto : • Modificadora • Seletora • Construtora • Destruidora Análise o projetos de sistemas orientados a objetos
Objetos - Identidade “Identidade é aquela propriedade de um objeto que o distingue de todos os outros objetos” Khoshafiam e Copeland Análise o projetos de sistemas orientados a objetos
Objetos - Identidade • Um identificador é anexado ao objeto no momento da criação do objeto • O mesmo identificador permanece com o objeto por toda sua existência • Dois objetos não podem ter o mesmo identificador Análise o projetos de sistemas orientados a objetos
Modelo de objetos • Diferentes metodologias, diferentes maneiras de resolver o problema • Em orientação a objetos existe o conceito de “Modelo de objetos” • Compõe-se de 4 elementos principais: • Abstração • Encapsulamento • Modularidade • Hierarquia Análise o projetos de sistemas orientados a objetos
Abstração • Elemento fundamental pelo qual se reconhece um objeto, seja ele um processo ou situação no mundo real “Uma Abstração denota as características essenciais de um objeto que o distinguem de todos os outros tipos de objetos e portanto definem nitidamente os limites conceituais relativos à perspectiva do observador.” GradyBooch Análise o projetos de sistemas orientados a objetos
Abstração Análise o projetos de sistemas orientados a objetos
Abstração • Descreve as características visíveis do objeto • Tem seu foco no comportamento observável do objeto • Não descreve, entretanto: • A sua implementação • O seu funcionamento Análise o projetos de sistemas orientados a objetos
Encapsulamento • É o processo de esconder todos os detalhes de um objeto que não contribuem para suas características essenciais “Encapsulamento é o processo de identificação dos elementos de uma abstração que constituem sua estrutura e comportamento.” GradyBooch Análise o projetos de sistemas orientados a objetos
Encapsulamento • Técnica de proteger informações • É a arte de esconder o que não é essencial Deve-se saber : • O que o objeto produz • O que o objeto necessita para produzir Ex.:Para dirigir é preciso saber que o carro produz movimento e precisa de gasolina para funcionar. Não é necessário saber como ele funciona Análise o projetos de sistemas orientados a objetos
Encapsulamento Análise o projetos de sistemas orientados a objetos
Encapsulamento • A interface de um objeto declara todas as operações permitidas # Todo o acesso aos dados do objeto é feito através da chamada a uma operação da sua interface. Análise o projetos de sistemas orientados a objetos
Encapsulamento • Benefícios • Segurança • Protege os atributos dos objetos de terem seus valores corrompidos por outros objetos. • Independência • “Escondendo” seus atributos, um objeto protege outros objetos de complicações de dependência de sua estrutura interna Análise o projetos de sistemas orientados a objetos
Modularidade • Divisão do sistema em componentes individuais • Permite maior clareza e compreensão • Identifica os limites do sistema • O agrupamento de classes e objetos em módulos permite a montagem de uma estrutura lógica que produz a arquitetura do sistema Análise o projetos de sistemas orientados a objetos
Modularidade • “Modularidade é a propriedade de um sistema de ser decomposto em um conjunto de módulos coesivos e relacionalmente desprendidos.” Grady Booch Análise o projetos de sistemas orientados a objetos
Modularidade Análise o projetos de sistemas orientados a objetos
Hierarquia • Um grupo de abstrações frequentemente forma uma hierarquia e com a identificação dessas hierarquias no projeto, pode-se simplificar o entendimento do problema. “Hierarquia é uma graduação ou ordenamento de abstrações “ GradyBooch Análise o projetos de sistemas orientados a objetos
Hierarquia Abstrações formam uma hierarquia Análise o projetos de sistemas orientados a objetos
Hierarquia-exemplo • Um computador é feito de CPU, gabinete, teclado e outros dispositivos. A CPU, por sua vez (e aqui o que fazemos é diminuir o nível de abstração), é formada de portas lógicas; as portas lógicas, por sua vez, são formadas de transístores; estes, por sua vez, são formados de cristais, metais e substâncias químicas; estas por sua vez, formadas por moléculas, que são formadas por átomos, e assim em diante Análise o projetos de sistemas orientados a objetos
Benefícios do modelo de objetos • É adequado para sistemas que pretendem evoluir com o tempo, pois sua estrutura permite que se mude a implementação interna de um objeto sem ter que mudar todo o código que se situa acima deste • É um modelo maleável, o que permite a inserção de novas características • Princípios como “esconder informações” e “modularidade” permitem facilidade em sistemas que possuem manutenção constante Análise o projetos de sistemas orientados a objetos
Classes • Estrutura geral de onde os objetos podem derivar • Cada objeto é uma linha de vida à parte e cada um possui um estado específico • Um objeto é diferente do outro (Em seu conteúdo e estado) mesmo que a sua interface seja a mesma. “Uma classe é um grupo de objetos que compartilham uma estrutura comum e um comportamento comum” GradyBooch Análise o projetos de sistemas orientados a objetos
Classes • Existem vários tipos de objetos, portanto existem vários tipos de classes Análise o projetos de sistemas orientados a objetos
Classes A classe representa um grupo de objetos com estrutura e comportamentos comuns Análise o projetos de sistemas orientados a objetos
Classes • Todos os objetos são instâncias de uma classe. • Possibilita a reutilização de código • Uma classe é representada conforme abaixo: Análise o projetos de sistemas orientados a objetos
Classes e Objetos • Classe é o que se projeta e programa • Objeto é o que se cria durante o processamento Análise o projetos de sistemas orientados a objetos
Classes - Visões • A interface de uma classe provê a visão externa, e portanto, enfatiza a abstração enquanto esconde sua estrutura e segredos de seu comportamento • A implementação de uma classe é sua visão interna, que engloba os segredos de seu comportamento Análise o projetos de sistemas orientados a objetos
Classes - Visões • A interface de uma classe divide-se em: • Pública (Representada pelo símbolo “+”) Uma declaração que forma parte da interface de uma classe e é visível para todos os clientes que são habilitados para isto; • Protegida (Representada pelo símbolo “#” Uma declaração que forma parte da interface de uma classe, mas não é visível para quaisquer outras classes, exceto suas subclasses; • Privada (Representada pelo símbolo “-”) Uma declaração que forma parte da interface de uma classe, mas não é visível para quaisquer outras classes. Análise o projetos de sistemas orientados a objetos
Classes – Classificação e instanciação • Classificação • É a operação que divide em uma ou mais categorias (classes) indivíduos dentro de um domínio; • Instanciação • É a operação que evidencia um indivíduo (Objeto) que pertence a uma categoria. São operações opostas. Quando se une vários indivíduos em uma categoria, é uma classificação, mas quando se pega um único indivíduo da categoria, é uma instanciação. Análise o projetos de sistemas orientados a objetos
Classes – Classificação e instanciação Análise o projetos de sistemas orientados a objetos
Classes – Generalização / Especialização • Generalização Ato de definir-se uma Classe (supertipo) que irá conter as características e o comportamento que outras Classes possuem em comum • Especialização Ato de definir-se uma Classe que além de herdar as características e o comportamento do Supertipo ainda possui outras características que são sua especialidade (somente ela tem) e, portanto, os demais subtipos não possuem Análise o projetos de sistemas orientados a objetos
Classes – Generalização / Especialização Especialização Generalização Análise o projetos de sistemas orientados a objetos
Classes – Generalização / especialização • Observa características comuns para determinar uma classe mais abrangente gato Felinos leão tigre Mamíferos atleta Pessoas professor médico Análise o projetos de sistemas orientados a objetos
Classes – Generalização / especialização • Uma Classe derivada herda a estrutura de dados e métodos de sua classe “base”, mas pode seletivamente: • adicionar novos métodos • estender a estrutura de dados • redefinir a implementação de métodos já existentes • Uma Classe “base” propicia a funcionalidade que é comum a todas as suas classes derivadas, enquanto que uma classe derivada proporciona a funcionalidade adicional que especializa seu comportamento. • A Generalização é uma noção conceitual. Herança é a implementação de uma generalização. Análise o projetos de sistemas orientados a objetos
Classes - Herança • Herança é o compartilhamento de atributos e operações entre classes com base em um relacionamento hierárquico • Cada subclasse herda todas as propriedades da superclasse e acrescenta suas próprias e exclusivas características • Permite a reutilização de especificações comuns Análise o projetos de sistemas orientados a objetos