AOO - Análise Orientado a Objetos

Slides:



Advertisements
Apresentações semelhantes
Orientação a objetos identidade abstração classificação encapsulamento
Advertisements

Análise e Projeto Orientado a Objetos
Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
Introdução à Programação Orientada à Objetos Prof. Daniel Merli Lamosa Maio de 2002.
Orientação por Objectos > Modelo de Processo OO > Identificação de Classe e Objectos Aula 12.
UML - Diagrama de Classes e objetos
Análise e Projeto de Sistemas
Análise Orientada a Objetos
Modelagem Orientada a Objetos
Cartões CRC (Class Responsibility Card)
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
O Paradigma de Orientação a Objetos
Introdução ao paradigma de programação: Orientado a Objetos
Professor: Rogério Lopes Disciplina: Engenharia de Software II Fortium Sistemas da Informação Engenharia de Software II.
Diagramas de Classes.
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Introdução à Modelagem Conceitual 1. Conceitos Básicos
Programação Orientada a Objetos
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Introdução a Programação Orientada a Objetos
Análise e Projetos de Sistemas UML-Linguagem de Modelagem Unificada Modelo de Dados com UML Diagrama de Classes Professor: Armando Hage.
Orientação a Objetos.
TÉCNICAS DE PROGRAMAÇÃO II
Análise Orientada a Objetos
Polimorfismo em C#.
Princípios de Orientação à Objetos
Diagrama de Classes e Colaboração
DIAGRAMA DE CLASSE Modelagem de Software
. Smalltalk HISTÓRICO . Década de 60 – POO . Dynabook (Alan Kay)
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Métodos de Construção de Software: Orientação a Objetos
Oberdan Bitencourt Ferreira
Diagrama de Classes George Gomes Cabral.
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Orientação a Objetos Parte I
Programação Web Orientada a Objetos
Programação Orientada à Objetos
PROGRAMAÇÃO ORIENTADA A OBJETO - JAVA
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Herança em POO Importante:
SISTEMAS DISTRIBUIDOS Aula 4
Aula prática 14 Orientação a Objetos – C++ Parte 2
Banco de Dados Aplicado ao Desenvolvimento de Software
PROGRAMAÇÃO ORIENTADA A OBJETOS
Programação Orientada à Objetos
Modelagem de Entidade/Objetos de Domínio com Diagrama de Classes
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 7. Análise e projeto orientados a objetos 7.1 Técnica de modelagem.
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
Introdução a Programação Orientada a Objetos
Introdução a Orientação a Objetos
20/04/2017 Orientação a Objetos 1 1.
Projeto de Banco de Dados
Introdução à Programação Orientada a Objeto
Módulo II Capítulo 1: Orientação a Objetos
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Continuação Modelagem Orientada a Objetos Técnico Subsequente.
Engenharia de Software Orientada a Objetos
Análise Orientada a Objetos
Características Cor Combustível Num_Portas Potencia Comportamentos Acelerar Feiar Acender farol Dar seta Buzinar Características Cor Combustível Num_Portas.
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
O que é modelagem orientada a objetos?
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
Análise e Design de Software Site:
Visão Geral de Orientação a Objetos com UML Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.
Engenharia de Software Orientada a Objetos Professor: Guilherme Timóteo Aula 3: – Modelagem de Classes (parte 2)
Análise Orientada a Objetos Por Patrícia Braga Centro Universitário Jorge Amado.
Análise Orientada a Objetos Prof. Wolley W. Silva
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

AOO - Análise Orientado a Objetos Associação Educacional Leonardo da Vinci AOO - Análise Orientado a Objetos Professor: Marcio Gonçalves

Agenda Apresentação Cenário Paradigmas da Orientação a Objetos Princípios Básicos

Apresentação da disciplina Formação Experiência profissional Atividades desenvolvidas Forma de avaliação (2 provas e 1 trabalho)  

Cenário Surgimento da Enga. de Sofware (60) para resolver os problemas gerados pela crise do software. As várias técnicas desenvolvidas nos anos 70 e 80 não resolveram o problema de produtividade e qualidade nos softwares. Cenário No final da década de 60 surge a disciplina “Engenharia de software” para atacar os problemas gerados pela “Crise do software”. Porém as várias técnicas desenvolvidas nos anos 70 e 80 não resolveram os problemas de produtividade e qualidade em software.  

Cenário Lições da década de 80. Requisitos do usuário são mais importantes Funções e dados tem grande importância, porém não podem estar separados Lições da década de 80 Codificação e metodologias de desenvolvimento são menos importantes que os requisitos dos usuários. Funções e dados têm grande importância, porém não podem estar separados. Técnicas de modelagem sem um suporte automatizado (CASE) não são bem aplicadas na prática.

Cenário Realidade atual Sistemas de alta complexidade Ferramentas de desenvolvimento drasticamente diferentes de 20 anos atrás. Sistemas maiores, mais complexos e mais voláteis. A mudança para alcançar a qualidade e produtividade está na reutilização. Realidade atual Sistemas de hoje são diferentes daqueles da época do desenvolvimento da Análise e Projeto Estruturados. Ferramentas e ambientes de desenvolvimento são drasticamente diferentes do que 20 anos atrás. Sistemas são maiores, mais complexos e mais voláteis do que 10-20 anos atrás. A interface ocupa hoje cerca de 75% do código de uma aplicação. A mudança para alcançar qualidade e produtividade está na reutilização de componentes, ênfase da O.O.  

Paradigmas da O. Objetos O que são objetos Objetos computacionais Os diferentes tipos de objetos Análise e projeto orientado a objetos?

O que são Objetos Podemos entender um objeto como uma “coisa” física: uma pedra, um melão, um carro. Contudo um objeto pode também ser algo que não existe em forma física: uma equação, conta corrente. O QUE SÃO OBJETOS? Conforme o dicionário Aurélio, temos as seguintes definições para a palavra “objeto”: [Do lat. objectu, part. de objicere, 'pôr, lançar diante', 'expor'.] S. m. 1. Tudo que é apreendido pelo conhecimento, que não é o sujeito do conhecimento. 2. Tudo que é manipulável e/ou manufaturável. 3. Tudo que é perceptível por qualquer dos sentidos. 4. Coisa, peça, artigo de compra e venda: 5. Matéria, assunto: 6. Agente; motivo, causa: 7. O ponto de convergência duma atividade; mira, desígnio: 8. Mira, fim, propósito, intento; objetivo: 9. Filos. O que é conhecido, pensado ou representado, em oposição ao ato de conhecer, pensar ou representar. 10. Filos. O que se apresenta à percepção com um caráter fixo e estável. [Cf. (nesta acepç.) sujeito (11).] 11. Ópt. Fonte de luz ou corpo iluminado cuja imagem se pode formar num sistema óptico. 12. Jur. Aquilo sobre que incide um direito, obrigação, faculdade, norma de procedimento, proibição, etc. Pelas definições podemos ver que o termo “objeto” pode ter muitos significados diferentes. Podemos entender um objeto como uma “coisa” física: uma pedra, uma jaca ou um sapo por exemplo. Também podemos considerar uma equação ou uma conta bancária como um objeto, nesse caso puramente mental, pois não existe uma “coisa” física que pode impressionar nossos sentidos para que estes o percebam como um objeto físico. Pois bem, nos objetos computacionais (objetos que se encontram dentro de sistemas de computador) procuramos reproduzir as mesmas características dos objetos do mundo real, programando comportamentos semelhantes àqueles que encontramos nos objetos do mundo real. Um programador pode interagir com esses objetos ativando os comportamentos programados, sem necessidade de entender o funcionamento interno desses comportamentos. Ou seja, para interagir com os objetos, precisamos apenas conhecer o que fazem e usá-los, nada mais. A proposta da orientação a Objetos é representar o mais fielmente possível as situações do mundo real nos sistemas computacionais. Nós entendemos o mundo como um todo composto por vários objetos que interagem uns com os outros. Da mesma maneira, a Orientação a Objetos consiste em considerar os sistemas computacionais não como uma coleção estruturada de processos, mas sim como uma coleção de objetos que interagem entre si. Orientação a Objetos consiste em considerar os sistemas computacionais como uma coleção de objetos que interagem de maneira organizada.

Objetos Computacionais Objetos que se encontram dentro do sistemas de computador. São abstrações do mundo real. Objetos computacionais são estruturas de programas que contém as informações e os comportamentos que representam um objeto dentro do sistema. OBJETOS COMPUTACIONAIS À primeira vista pode parecer complicado imaginar objetos dentro de um sistema de computador. Como imaginar um carro dentro de um computador? Ou mesmo uma casa? Ou uma bola? De fato pode parecer estranho, mas devemos estar atentos que a representação no computador sempre é uma abstração dos objetos do mundo real. E como tal, esses modelos abstratos também podem se comportar da mesma maneira como o fariam no mundo real. A primeira coisa a dizer dos objetos computacionais é que eles são simplificações dos objetos reais. Um objeto “pessoa” em um sistema computacional é reduzido a um espaço de memória onde registramos dados pessoais e trechos de programa que processam esses dados de modo a registrar no sistema comportamentos que uma pessoa do mundo real realiza (comprar, receber salário, etc.). Para que os objetos computacionais possam interagir dentro de um sistema de computador da mesma forma como os objetos reais interagem com o mundo real, é importante que esses objetos saibam como reagir perante uma ação. Não é o sistema que determina o comportamento de um objeto computacional, mas ele próprio deve possuir a informação necessária para saber como e de que forma deve se comportar diante uma situação. Se eu jogar uma bola real no chão do mundo real, esta deverá saltitar, não porque eu quis, mas porque as características da bola a fazem ter esse comportamento diante da ação que impus à ela. Da mesma forma, se concebermos um objeto computacional bola (cuja intenção é reproduzir uma bola real), este deverá simular no computador a ação de quicar quando jogada, tão perfeitamente quanto for preciso. Por exemplo, ao sacar um cheque no mundo real, o saldo da conta bancária diminui e dinheiro em caixa cresce. Para reproduzir essa situação em um sistema computacional, criaríamos um objeto “cheque”, um objeto “conta bancária” e um objeto “caixa”. Em um sistema computacional, o objeto “caixa” poderia reagir ao recebimento de um objeto “cheque” solicitando ao objeto “conta” o desconto desse cheque. O objeto “conta” executa o saque, diminui o valor do atributo “saldo” e retorna uma resposta ao objeto “caixa”, que aumenta o valor do atributo “saldo” no valor do cheque. Objetos computacionais são estruturas de programação que contém as informações e os comportamentos que representam um objeto dentro do sistema.

Os diferentes tipos de Objetos Objetos computacionais visuais Objetos com tarefa relacionada Objetos multimídia OS DIFERENTES TIPOS DE OBJETOS COMPUTACIONAIS Com o objetivo de esclarecer melhor essa relação entre os objetos computacionais e o comportamento agregado, vamos utilizar, como exemplo, alguns tipos diferentes de objetos encontrados no ambiente computacional. Objetos Computacionais Visuais Esse tipo de objeto possui uma forma direta de interação com os usuários. De fato, os usuários podem apertar botões, mover peças e selecionar itens dentro de caixas. É uma interação que, apesar de acontecer em um monitor de vídeo, sob o controle de um mouse ou mesmo um teclado, possui um nível de abstração e interação muito bom em relação ao mundo real. A Figura 1 ilustra alguns desses objetos visuais, como os Button (botões), ListBox (Caixa de texto com barra de rolagem), o MonthCalendar (Calendário), RadioButton (Primeiro, Segundo e Terceiro), os CheckBox (Cadeira, Mesa e Sofá) e o ComboBox (Vermelho). Figura 1 – Objetos comuns de interface com o usuário Objetos computacionais visuais são comumente manuseados por ambientes de programação visual. Para utilizar os objetos desses ambientes basta selecioná-los em uma palheta e arrastá-los até a janela da aplicação. Nossa única preocupação em relação a esses objetos durante o desenvolvimento de um sistema é onde utilizá-los, pois os componentes já “sabem” como devem funcionar sem que haja necessidade de escrever código para isso. O Button (Botão), por exemplo, “sabe” como deve ser pressionado, o Listbox “sabe” como funciona o Scrollbar (Barra de Rolagem), ou seja, os objetos sabem como se comportar quando solicitado à eles alguma ação. Esses componentes visuais são verdadeiros objetos, pois pode-se criar descendentes dos componentes originais, alterando comportamentos e agregando novas funcionalidades. Programar de forma orientada a objetos não se resume a utilizar componentes visuais na interface gráfica, mas em definir o sistema inteiro dentro da filosofia orientada a objetos. O fato de um programa ser feito em uma ferramenta de programação visual não quer dizer necessariamente que ele é orientado a objetos.

Análise e Programação OO. Análise orientada a objetos Consiste em definir quais objetos fazem parte de um sistema e a maneira como se comportam. Programação orientada a objetos Consiste em utilizar objetos computacionais para implementar as funcionalidades de um sistema. Análise Orientada a Objetos Baseado nessa metodologia, o processo de análise consiste em identificar quais objetos existem dentro do universo que se pretende automatizar, e quais são atributos e ações desses objetos. Uma das vantagens que se pretende buscar com essa maneira de entender os sistemas é a capacidade do analista poder compartilhar com o usuário leigo o entendimento que ele tem de como o sistema funciona. Análise Orientada a Objetos consiste em definir quais objetos que fazem parte de um sistema e a maneira como se comportam. Programação Orientada a Objetos A programação orientada a objetos consiste em utilizar estruturas de dados que simulem o comportamento dos objetos, facilitando a programação pelo uso de uma metodologia unificada para a análise e a programação. Os mesmos objetos que o analista identifica no seu diagrama podem ser implementados exatamente como foram projetados, sem necessidade de fazer uma “tradução” dos diagramas da análise para estruturas de dados e de programação como acontece na análise estruturada. É possível, entretanto, fazer uma análise orientada a objetos e implementar em uma linguagem tradicional, bem como é possível também fazer implementações em linguagens orientadas a objetos de sistemas analisados com outras metodologias. Programação Orientada a Objetos consiste em utilizar objetos computacionais para implementar as funcionalidades de um sistema. OS BENEFÍCIOS DA ORIENTAÇÃO A OBJETOS! A técnica de análise e programação orientada a objetos está se tornando cada vez mais popular entre os desenvolvedores de sistema. Essa popularidade não é fruto do acaso, ou da “moda”, e sim das vantagens que os desenvolvedores passam a usufruir quando adotam essa metodologia. A principal vantagem da orientação a objetos consiste em reunir em uma mesma estrutura os dados e os processos que são executadas sobre esses dados, permitindo assim um grau maior de organização e simplicidade do programa. A partir do momento em que um desenvolvedor cria um objeto para realizar uma tarefa complexa, os outros desenvolvedores só precisam acessar esse objeto para realizar essas mesmas tarefas, sem precisar saber como elas são realizadas. Se alguém muda a maneira como esse objeto realiza internamente essa tarefa, os outros desenvolvedores não precisam alterar os seus programas para continuar acessando o novo comportamento, e isso representa um ganho real de produtividade. O procedimento de manutenção restrito ao objeto reduz custo, tempo e assegura a certeza de uma manutenção eficaz, visto que as variáveis controladas estavam restritos aos objetos modificados, e mais em nenhuma outra parte do sistema.

Por que Orientação a Objetos? Aumento de Produtividade Ganho de Qualidade Ganho de Confiabilidade Conhecimento adquirido podendo ser compartilhado Manutenibilidade Custos

Flexibilidade a mudanças Mudanças nos processos de negócio do usuário Década de 40: 10 anos Década de 60-70: 5 anos Década de 90: 2 anos Atualmente: 6 meses

Conceitos Básicos Abstração Encapsulamento Objetos Classes Persistência Herança

Abstração “Ato de separar um ou mais elementos de uma totalidade complexa (coisa, representação, fato), os quais só mentalmente podem ser separados” Ignorar aspectos não relevantes É a capacidade de focalizar o essencial e ignorar detalhes acidentais não relacionados com o objetivo estabelecido. Exemplos 1: Ao modelarmos aviões comercias, helicópteros e caças podemos abstrair detalhes de cada um deles e observar somente o que existe em comum. Exemplos 2: Toda pessoa tem um atributo para cor dos olhos, ao modelarmos um sistema de folha de pagamento de folha de pagtos, esta informação é irrelevante, portanto não precisa ser incluída em nossa relação de atributos. Ato de separar mentalmente um ou mais elementos de uma totalidade complexa. É o ato de dividir problemas complexos em problemas menores, e feito isto resolvemos cada um deles até encontrar a solução para o problema inteiro. O termo abstração em desenvolvimento de sistemas, significa a grosso modo só devemos representar aquilo que vai ser usado. Abstração é a capacidade de olhar apenas uma parte de um todo, ou seja, retirar da realidade apenas as entidades e fenômenos considerados essenciais, excluíndo-se todos os aspectos irrelevantes ou secundários. Através do mecanismo de abstração, o ser humano pode entender formas complexas, ao dividi-las em partes e analisar cada parte separadamente. Abstração - Consiste na concentração nos aspectos essenciais. Preserva a liberdade de se tomar decisões evitando, tanto quanto possível comprometimentos prematuros com detalhes. É o processo pelo qual a mente ou a inteligência compreende o objeto, suas características e suas funcionalidade Abstração Abstração é a capacidade de focalizar o essencial e ignorar detalhes acidentais não relacionados com o objetivo estabelecido. Por exemplo: ao modelar aviões comerciais, helicópteros e caças podemos abstrair detalhes de cada um deles e observar somente o que existe em comum. Os objetos de software também são criados tentando abstrair algo do mundo, seja um objeto real ou abstrato.

Abstração

Abstração

Encapsulamento Ocultar aspectos não relevantes Modo de utilização dos dados e métodos é diferente da prog. tradicional. Os dados e processos em uma única entidade. Um dos grande trunfo da POO em relação a prog. tradicional. Permite alterações sem afetar demais partes do sistema. Encapsulamento A partir do encapsulamento, podemos ocultar detalhes referentes à implementação de um Objeto. Desta forma, podemos proteger os dados contra adulteração, visto que só podem ser acessados pelo próprio Objeto, através de seus métodos. Estes métodos implementam as operações permitidas sobre a estrutura de dados. Encapsulamento é um mecanismo que utilizamos para esconder detalhes de estruturas complexas, que de outra forma iriam interferir em nossa análise. Abstração, hierarquização e encapsulamento estão ligados. Como vimos, abstração é a capacidade de dividirmos estruturas em partes, para analisá-las separadamente. Conforme vamos decompondo sucessivamente cada uma das partes de um todo, geramos uma hierarquia, que se estende até o componente mais específico. Desta forma quando agregamos componentes, formando um novo todo, estamos encapsulando estes componentes, que não mais aparecerão, e isto facilita a análise.  

Encapsulamento Benefícios Modularidade - (O código é independente de outros objetos) Informações Privadas (um objeto tem uma interface pública que outros objetos podem utilizar. As informações do objeto são privadas) [Information Hiding] O modo de utilização dos atributos e métodos é diferente do modo como a programação tradicional utiliza. Na OO os dados e os processos que tratam esses dados são “encapsulados” numa única entidade. A única maneira de conhecermos ou alterarmos os atributos de um objeto é através de seus métodos. O encapsulamento é op grande trunfo da OO em relação a programação tradicional (estruturada), a vantagem é que encapsulamento disponibiliza o objeto com toda sua funcionalidade sem que você precise saber como ele funciona internamente e nem como armazena os dados que você recupera. Separação dos aspectos externos de um objeto dos seus detalhes internos de implementação O estado de um objeto somente é acessível a partir da implementação de seu comportamento Encapsulamento - Também chamado de ocultamento de informações, é o resultado de ocultar os detalhes de implementação de um objeto. É o termo formal que descreve a junção de métodos e dados dentro de um objeto de maneira que o acesso aos dados seja permitido somente por meio dos próprios métodos do objeto. Nenhuma outra parte do programa pode operar diretamente em um dado do objeto. A comunicação de objetos ocorre exclusivamente por meio de mensagens explícitas.

Encapsulamento Encapsulamento

Objetos São elementos reais ou abstratos (de pensamento) que sofrem ou executam ações. Um objeto é qualquer indivíduo, lugar, evento, coisa, tela, relatório ou conceito que seja aplicável ao sistema. Objeto é uma entidade capaz de reter um estado (informação) e que oferece uma séria de operações (comportamentos) ou para examinar ou para afetar este estado.

Como é um objeto? Apresenta características (Estado). Executa e sofre ações (Comportamento). Podem ser classificados por categorias ou classes. Interagem e agrupam-se formando sistemas (que podem ser considerados como objetos).

Objetos

Objetos Exemplos: Coisas: Cadeira, Mesa, Telefone, Televisão, ... Funções: Diretor, Funcionário, Professor, Cliente,... Eventos: uma Festa, um Congresso, uma Aula, ... Lugares: uma Cidade, uma Sala, um País, .... Processos: uma Operação, um Procedimento, ... A cadeira por si só, é um objeto único. Contudo outros objetos foram empregados na sua construção, como a madeira e os pregos. Um prego também é um objeto independente, com suas próprias caracteristicas.

Atributos É o conjunto de características que descrevem os objetos Atributos de uma pessoa: cor dos olhos, altura, peso, idade, sexo… Atributos de uma conta corrente: correntista, saldo, data de abertura… Somente mudam através de agentes interno ou externos.

Atributos Os valores das propriedades de um objeto definem seu Estado.

Exercícios Identificar pelo menos 10 objetos que pertencem ao domínio de problema: “Sala de Aula”

Métodos ou Serviços (Ações) São as tarefas que o objeto pode realizar As ações do objeto podem interagir com outros objetos Ou podem ser ações internas Ações de um cachorro: latir, babar, correr em círculos, morder…

Diagrama de Serviços

Diagrama de Serviços (exemplo)

Diagrama de Serviços (exemplo)

Exercícios Identificar os métodos existentes no objeto Professor Graficar/Descrever o diagrama de serviços para o método FazerChamada do objeto Professor

Exercícios

Classes São os modelos a partir dos quais os objetos são criados (Ex: Planta Estrutural) Os modelos são agrupados em classes ou categorias por similaridade de finalidade As categorias estruturam-se hieraquicamente. Ex.: Pessoas–Clientes-Funcionarios, Animais-Aves-Canários

Classes Duas categorias de bichos: “Cães” e “Gatos”

Classes

Classes

Hierarquia de Classes Características Comuns Mamífero Primata Felino Ser Humano Chimpanzé

Caracteristicas comuns Herança Tudo aquilo que se herda; Aquilo que se transmite por hereditariedade (Ex: Características genéticas dos pais). Mamar Possuir Pêlos Mamífero Herança Caracteristicas comuns Possuir Mãos e Pés É Inteligente Primata Ser Humano Andar ereto Filosofar

Herança Classes prontas podem ser usadas para escrever novos objetos (SuperClasse e SubClasses, Ancestrais e Descendentes) O programador só escreve o que muda Alterações nos ancestrais se propagam aos descendentes Menos bugs, mais produtividade

Herança Simples

Herança Múltipla

Instanciação É quando a classe produz um objeto, como se ela fosse um modelo para a criação de objetos. Objetos nada mais são do que classes instanciadas. É o que dá existência ao objeto. Cada objeto é uma instância de sua classe

Instanciação Fazendo uma analogia com a programação procedural. “A estrutura de uma tabela pode ser comparada com uma classe e cada novo registro seria um novo objeto instanciado.” Obs: Isto só vale para efeitos de comparação, pois classe também possuem a definição dos métodos.

Classes Puras ou Abstratas São aquelas que nunca serão instanciadas diretamente. Servem de apoio para o processo de estruturação. Exemplo: Elas só existem para unificar todos os atributos e métodos comuns evitando assim redundância..

Exercícios Identificar os objetos da Sala de Aula Agrupar os objetos em classe conforme suas caracteristicas

Tipos de Estruturas Visualizar Domínio e Complexidade do problema em estudo. Tipos: - Generalização-Especialização - Todo-Parte

Generalização-Especialização Tipos de Estruturas Generalização-Especialização É uma estrutura hierárquica onde temos superclasses e suas respectivas subclasses. É onde ocorre a herança. Quando desejarmos implementar herança devemos utilizar este tipo de estrutura. Pode ocorrer entre classes ou objetos.

Generalização-Especialização Tipos de Estruturas Generalização-Especialização

Generalização-Especialização Tipos de Estruturas Generalização-Especialização

Tipos de Estruturas Todo-Parte Trata-se de agregação ou decomposição de objetos. É uma estratégia muito útil na identificação dos objetos e seus componentes. Também ocorre entre objetos ou classes. Isto significa que um objeto/classe podem conter, dentro de si, outras estruturas.

Tipos de Estruturas Todo-Parte A estruturas todo-parte possuem um componente chamado de CARDINALIDADE.

Tipos de Estruturas Todo-Parte

Exercícios Identificar as possíveis estruturas existentes no exercício da Sala de Aula.

Exercícios Identificar e graficar 5 exemplos de estruturas do tipo Generalização-Especialização Identificar e graficar 5 exemplos de estruturas do tipo Todo-Parte

Relacionamentos Conexões de Ocorrência Conexões de Mensagens Quando um atributo de um objeto contém uma referência a outro objeto. Conexões de Mensagens Quando um objeto ativa um método de outro objeto. Não caracterizam qualquer tipo de hierarquia ou mesmo estrutura. Relacionamentos ocorrem quando os objetos referenciam uns aos outros (Conexão de ocorrência) ou quando um objeto ativa um método de outro objeto (conexão por mensagem).

Relacionamentos Conexões de Ocorrência Cardinalidade Conexões de Muitos para Muitos. Conexões por Ocorrência - Cardinalidade é o número de vezes que um objeto é referenciado ou referencia outro. - Aparecem quando identificamos redundância. Exemplo: Objeto carro e desejarmos manter os dados do proprietário. O exemplo não se trata de uma hierarquia, nem de uma estrutura, apenas existe uma ocorrência. Quando acontece um relacionamento muitos para muitos, normalmente surge um novo objeto.

Relacionamentos Conexões de Ocorrência. Exemplo Um exemplo prático: - Objeto locação deverá fazer a amarração da conexão de ocorrência entre os objetos

Relacionamentos Conexões de Mensagens Métodos disparados no objeto recebedor Ocorre entre objetos Entre classes somente quando um novo objeto é criado. Pode ou não retornar alguma resposta. Normalmente a conexões por mensagens ocorre de objeto para objetos. Uma classe somente recebe uma conexão por mensagem quando esta for solicitada para criar um novo objeto.

Relacionamentos Conexões por Mensagem O método Locar_Fita_Cliente tem duas funções, verificar se o cliente existe ou cadastrar um novo cliente. O método Locar_Fita_Cliente dispara uma conexão de ocorrência para o objeto Cadastro_Cliente e caso seja negativo será enviada uma mensagem para o objeto Cadastro_Cliente para que este crie um novo objeto Cliente.

Relacionamentos O método Locar_Fita_Cliente tem duas funções, verificar se o cliente existe ou cadastrar um novo cliente. O método Locar_Fita_Cliente dispara uma conexão de ocorrência para o objeto Cadastro_Cliente e caso seja negativo será enviada uma mensagem para o objeto Cadastro_Cliente para que este crie um novo objeto Cliente.

Persistência Tempo em que um objeto fica em memória, tanto na principal como na secundária. Para tornar um objeto persistente precisamos salvá-lo em meio magnético. A persistência de um objeto não significa que o mesmo é eterno. (ex. Cadastro de clientes)

Polimorfismo As classes fazem a mesma operação (método), mas de forma diferente. Ocorre quando um método definido no ancestral é redefinido no descendente com um comportamento diferente. Todo método definido em um ancestral pode ser acessado através dos descendentes

Polimorfismo As classes fazem a mesma operação (método), mas de forma diferente.

Polimorfismo O objeto “chamador” apenas precisa referenciar o método.

Polimorfismo

Assunto A idéia de dividir o sistema em assuntos é proporcionar ao analista uma visão geral de um modelo. Transformar as classes mais superiores em assuntos Indicado o uso para modelos com mais de 35 objetos.

Assunto

Assunto Possíveis assuntos do modelo. Pessoa Curso Matricula Plano de Aula

Assunto

Exemplo de Instâncias

Demonstração da Teoria - Definição de uma classe type c_pessoa = class nome string[40]; endereçostring[40]; end;