Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
. . Orientação a Objetos Conceitos Básicos Orientação a objetos Conceitos Básicos As técnicas orientadas a objeto permitem que o software seja construído de objetos que tenham um comportamento especifico. Os próprios objetos podem ser construídos a partir de outros, os quais, por sua vez, podem ainda ser construídos de outros. A análise de sistemas no mundo orientado a objeto é feita analisando-se os objetos e os eventos que interagem com esses objetos. O projeto de software é feito reusando-se classes de objetos existentes e quando necessário, construindo-se novas classes. Técnicas orientadas a objeto podem ser usadas para simplificar o projeto de sistemas complexos. O sistema pode ser visualizado como uma coleção de objetos, estando cada um dos objetos em um determinado estado. Os objetos são construídos a partir de outros objetos. A análise e o projeto orientados a objeto modelam o mundo em termos de objetos que tem propriedades e comportamentos e eventos que disparam operações que mudam o estado dos objetos. Os objetos interagem com outros objetos. A modelagem e o projeto orientados a objeto são os paradigmas que devem integrar todas as ferramentas e técnicas poderosas para a criação de software. Estratégia de desenvolvimento baseada no conceito de que o sistema deve ser construído a partir de componentes reutilizálfeis, chamados de objetos. Conceitos Entre as idéias fundamentais básicas para a tecnologia orientada a objeto incluem- se: . o Objetos; • Classes; o Métodos; • Herança; o Encapsulamento, Cada conceito é uma idéia ou um entendimento pessoal que temos do nosso mundo. Os conceitos que adquirimos nos permitem dar sentido sobre as coisas do nosso mundo. Essas coisas às quais nossos conceitos se aplicam são denominados objetos. Objeto o Um objeto pode ser real ou abstrato. o Os objetos possuem informações (contém dados) e desempenham ações (possuem funcionalidade). o Qualquer coisa à qual um conceito ou tipo de objeto se aplica - uma instância de um conceito ou tipo de objeto. o Um objeto é uma instância de uma classe. Exemplo: o Uma fatura; o Uma organização; o Um vôo de avião; o Uma pessoa; o Um lugar. Na análise e no projeto 00, estamos interessados no comportamento do objeto. As operações são codificadas como métodos. A representação de software 00 do objeto é, dessa forma, uma coleção de tipos de dados e métodos. No software 00: Um objeto é qualquer coisa, real ou abstrata, a respeito da qual armazenamos dados e os métodos que os manipulam. Exemplo: um tipo de objeto poderia ser Fatura e um objeto poderia ser nO. 51.783. 085: O termo objeto, porém, é diferente do termo entidade. A entidade preocupa- se apenas com os dados enquanto o objeto preocupa-se tanto com os dados como com os métodos com os quais os dados são manipulados. Métodos • Os métodos especificam a maneira pela qual os dados de um objeto são manipulados. • Uma especificação dos passos pelos quais uma operação deve ser executada. • Ele é um script de implementação de uma operação. • Diferentes métodos podem ser usados para executar a mesma operação. • Os métodos de um tipo de objeto referenciam somente as estruturas de dados desse tipo de objeto. • A ação que um objeto ou uma classe podem desempenhar. • Os métodos são similares às funções e procedures do universo da programação estruturada. Um objeto é, dessa forma, uma coisa, com suas propriedades representadas pelos tipos de dados e seu comportamento representado pelos métodos. Encapsulamento O ato de empacotar ao mesmo tempo dados e objetos é denominado encapsulamento. O objeto esconde seus dados de outros objetos e permite que os dados sejam acessados por intermédio de seus próprios métodos. Isso é chamado de ocultação de informações (information hiding). • O encapsulamento protege os dados do objeto do uso arbitrário e não- intencional. • O encapsulamento é o resultado (ou ato) de ocultar do usuário os detalhes da implementação de um objeto. • O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ele é implementado. • A definição de como implementar os conhecimentos ou ações de uma classe, sem informar como isto é feito. Exemplo: O1;ljeto Op@:n~õ~spmnissÍveis• a única ~ in de w.anipuhr 1.t 5trUtlln lU dados. O lÚtodo da ope~io t~ f)c1J.ho do 1JSU.Ú'io. Cada objeto encapsula uma estrutura de dados e métodos. Uma estrutura de dados encontra-se no centro de um objeto. O objeto é manipulado por métodos que implementam as operações permitidas. A estrutura de dados pode ser usada somente com os métodos. Essa restrição ao acesso é denominada encapsulamento, que protege os dados contra adulteração. Os dados do objeto não podem ser usados, exceto com esses métodos. Classe O termo classe refere-se à implementação de software de um tipo de objeto. Um tipo de objeto especifica uma família de objetos sem estipular como o tipo e o objeto são implementados. Os tipos de objetos são especificados durante a análise 00. Os tipos de objetos são implementados como módulos enquanto na linguagem orientada a objeto, os tipos de objetos são classificados como 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. • Uma classe pode ter sua própria estrutura de dados e métodos, bem como herda - lá de sua superclasse. Exemplo: Classe- Objeto - Método - Atributo. Classe Objetos Pessoa ~~Nome A ~Endereço IR "I~Telefone I M:'l r ia ~Idade Bu ~Altura I O•Registra~) bl ~Matricular() É Pedro ~PagarO IO EstudarO D ~CadastrarO Os Classes Abstratas e Concretas A classe abstrata é uma classe que não possui objetos instanciados a partir dela, enquanto a classe concreta possui objetos instanciados (criados) a partir dela. Exemplo: No mundo real, por exemplo, existem automóveis e aviões, mas nada que seja simplesmente um veiculo (em outras palavras, se não for um carro ou avião, não é de nosso interesse). Isso significa que podemos instanciar objetos como carros e aviões, mas nunca iremos criar objetos veículos. As classes abstratas são criadas quando necessitamos de uma cla~se que implemente recursos comuns a duas ou mais classes. Avião Herança Veículo Avião - nO. de motores, autonomia, velocidade máxima, altitude m~xjma.nO, passageiros (anemeter, aterrissar, g1.issar, aumentar e diminuir a velocidade). Cano - n°. passageiros. autonomia, marca, modelo (fazer curvas, aumentar e diminuir a velocidade). Veículo _ nO. passageiros, autonomia (aumentar e diminuir a velocidade). Carro É comum haver similaridades entre diferentes classes. Frequentemente, duas ou mais classes irão compartilhar os mesmos atributos e/ou métodos. Como nenhum de nós deseja reescrever várias vezes o mesmo código, seria interessante se algum mecanismo pudesse tirar proveito dessas similaridades. A herança é esse mecanismo. Por intermédio da herança, é possível modelar relacionamentos do tipo "é" ou "é semelhante", o que nos permite reutilizar rotinas e dados já existentes. Uma subclasse herda as propriedades de sua classe-mãe; uma subclasse herda as propriedades das subclasses e assim por diante. Uma subclasse pode herdar a estrutura de dados e os métodos, ou alguns dos métodos, de sua superclasse. Ela também tem métodos e às vezes, tipos de dados próprios. Subclasse - uma classe que é um subtipo de uma ou mais classes (denominadas supere/asses). Como tal, ela herda todas as características de suas superclasses. Em outras palavras, todas as características de uma classe são reusáveis por suas subclasses. Se a ciasse B herda de A, então dizemos que B é uma subclasse de A. Superclasse - Uma classe que é um supertipo de uma ou mais classes (tb chamadas de subc/asses). Como tal, ela é uma classe a partir da qual todas as suas características são herdadas por suas subclasses. Em outras palavras, todas as características de uma superclasse são reusáveis por aquelas classes que são seus subtipos. Se a classe B herda de A, então dizemos que A é uma superclasse de B. Exemplo 1: A figura abaixo mostra uma classe e uma subclasse. A 'subclasse tem os mesmos métodos de sua superclasse, mas tem também o método G. Ás vezes, uma classe herda propriedades de mais de uma superclasse. Isso é denominado herança múltipla. 80°O Herança Qasse Subclasse Exemplo 2: Pessoa - professor - aluno 085: As subclasses deverão sempre ficar abaixo da superclasse e o semicírculo deverá sempre apontar da subclasse para a superclasse Herança Simples e Múltipla Quando uma classe herda características somente de uma outra classe, dizemos que esta é uma herança simples. Quando uma classe herda de duas ou mais classes, temos um caso de herança múltipla. Em qualquer circunstância, o fato que você deverá lembrar é o seguinte: a subclasse herda todos os atributos e métodos das superciasses. Pássaro Dra<!ão Hierarquias de Generalização La~arto !'as.'"'" - Envergadura de asas , Velocidade máxima (comer/voar). Lag:tl'lo - N° de ganas, cor das escamas (comer/voar) Drngáo - Nome, Envergadura de asas , Velocidade máxima, N". de ganas, cor das escamas (expelir/capturar donzelas/comer) . Um conjunto de classes relacionadas por meio da herança. Uma boa maneira de organizarmos os conhecimentos é arranjando-o em hierarquias do geral para o mais especifico. Por exemplo, a figura abaixo descreve uma hierarquia com o conhecimento do tipo de objeto Pessoa no topo. Isso significa que Pessoa é um tipo de objeto mais geral do que empregado e estudante. Isso significa que empregado e estudante são subtipos de pessoa, ou, inversamente, que pessoa e um supertipo de empregado e estudante Pessoa /\ Empregado Estudante vendi\erente Diferenças entre análise e projeto: Primeira alternativa: I. A análise modela o problema e consiste das atividades necessárias para entender o domínio do problema (o que deve ser feito). É uma atividade de investigação. o projeto modela a solução e consiste das atividades de criação (como pode ser feito) Análise Modelagem do problema (entender) ..• Projeto MOdela(lem da solução (criar) Segunda alternativa: I. A análise consiste de todas as atividades feitas com ou para o conhecimento do cliente. A informação produzida é aquela que o cliente deve discutir e aprovar 2. O projeto inclui as atividades que resultam em informação que interessa apenas ao programador 3. Com essa definição, a análise invade um pouco o "lado da solução", pois o cliente deve discutir alguns tipos de interações que ocorrerão na interface do usuário, etc. , ;, An~lI.e= InfQrmaçâo impcmmte para0 di.nt. discutir e- aprO'u'ar Proj.to = Informaçào importlnte PElf80 programador apenaa Diagramas de Objeto-Relacionamento Os tipos de objetos têm relação com outros tipos de objeto. Os diagramas de entidade-relacionamento são usados há anos na análise convencional de sistemas. Os diagramas mostram as associações entre tipos de entidades. Um diagrama de objeto-relacionamento é representado da mesma maneira que o diagrama de entidade relacionamento. Veja a figura abaixo: Cliente Armazém Estoque de Produto Pedido Linha de Pedido Produto Um diagrama de objeto-relacionamento é essencialmente o mesmo que um diagrama de entidade-relacionamento, onde cada retângulo poderia ser um tipo de objeto na analise e projeto orientado a objeto. Fica mais fácil o entendimento do modelo quando os tipos de objetos e as relações são representados num diagrama de objeto-relacionamento; supertipos e subtipos num diagrama de generalização. Diagramas Orientados a Objeto Resumo dos símbolos usados para a analise e projeto orientado a objeto. Como já sabemos um objeto, como uma entidade, é uma coisa real ou abstrata. Nós, por conseguinte, usamos um retângulo para desenhar tipos de objetos. Recomenda-se que os tipos de objetos e classes sejam desenhados com caixas de cantos vivos e as atividades com caixas de cantos arredondados D~dos ~CJ Significado:Caixa de cantos vivosRepreserrtam dados (tipoDe entidade, subtipos,registros) Mínimo Máximo C~rdin~lid~de (multíplicíd~de) O I I a-r B JA L A ] I+[ B ] I ~~ O Mais do A que O I I Vf ] Mais doB que 1 A Mais do Mais do I I <fB ] que 1 Que 1 A Exclusividade Mútua Uma e somente uma das Ramificações são tomadas ~ [X J[A J / A está associado a ZX. Y ouZ. Atividades Caixa de cantos arredondados Representam ertividades (furções, processos ,pro::e dimentos) [ ] [ onde temos: ) • ./ Fluxo ou seqüência A r-a-rBJ lA HB 1 [A]--O{BJ [AJ. K[BJ [A J • {B J Mínimo lvláximo O 1 I 1. O lVIais do que O 1 lVIais do que 1 lVIais do lVIais do que 1 que 1 I Multiplicidade de Associação (cardinalidade): • É o número de instâncias de uma classe relacionada com uma instância de outra classe. • Para cada associação, há uma multiplicidade em cada direção. A notação usada pela UML, para os indicadores de multiplicidade, é: Muitos * Apenas Um 1 zero ou Muitos O..* Um ou Muitos 1..* zero ou Um 0..1 Artigo recebido como colaboração I sem Identificação de autoria. 00000001 00000002 00000003 00000004 00000005 00000006 00000007 00000008 00000009 00000010 00000011 00000012