Sistemas de Informação – 2ª Série Programação Orientada a Objetos Sistemas de Informação – 2ª Série Programação Orientada a Objetos Histórico / Programação • mudanças para compensar maior complexidade dos programas; • no inicio os computadores eram programados por instruções binárias (cabos ENIAC); • Assembly (baixo nível); • Fortran (primeira de alto nível); • Anos 60, programação estruturada; • POO; Sistemas de Informação – 2ª Série Programação Orientada a Objetos Histórico / POO / Simula • 1966 • Noruega • baseada em ALGOL 60 • simulações de sistemas c/ grande número de objetos; • serviu de base para TAD – Tipos Abstratos de Dados; • serviu de base para SmallTalk; Sistemas de Informação – 2ª Série Programação Orientada a Objetos Histórico / POO / SmallTalk • Desenvolvida no Centro de Pesquisas da Xerox; • década de 70; • incorporação do princípio dos objetos ativos: • reação a • mensagens que ativam os • comportamentos • objetos deixam de ser apenas dados (sendo apenas manipulados); • objetos agora são parte integrante da solução (a computação pode residir nos mesmos); • a mais popular. Sistemas de Informação – 2ª Série Programação Orientada a Objetos Histórico / POO / Outras • C++, baseada em C; • Objetive-C, também baseada em C; • Pascal orientado a objetos; • Eiffel; • TOOL, no Brasil Sistemas de Informação – 2ª Série Programação Orientada a Objetos Histórico / POO / Comercialização • Smalltalk-80 -> ParcPlace empresa da Xerox; • Digitalk -> Digitalk. Sistemas de Informação – 2ª Série Programação Orientada a Objetos Histórico / POO x Estruturada • POO • Simulação de modelos de sistemas: • Automação de escritórios; • Animação gráfica; • Informática educativa; • Instrumentos virtuais; • Editores de texto; • Bancos de dados; • etc. Sistemas de Informação – 2ª Série Programação Orientada a Objetos Histórico / POO x Estruturada • Estruturada • Resolução de problemas através de algoritmos: • Busca; • Otimização e resolução numérica de equações. Sistemas de Informação – 2ª Série Programação Orientada a Objetos POO • Envolve conceitos comuns ao cotidiano: • objetos e atributos; • todos e partes; • classes e membros; • Pessoas empregam métodos de organização: • Diferenciação – separação dos objetos através de suas características – árvore e computador; • Distinção – separação dos objetos do todo e da parte – carro e motor; • Formação de classes de objetos – separação entre bicicletas e motocicletas; Sistemas de Informação – 2ª Série Programação Orientada a Objetos POO • É implementada pelo envio de mensagens aos objetos; • Os objetos respondem ao estímulo de uma mensagem desencadeando uma seqüência de execução (computação reside no objeto); • Durante a computação desencadeada por uma mensagem, o objeto respectivo pode enviar outra(s) mensagem(ns) para outro(s) objeto(s); • A execução de um programa só termina quando todas as mensagens enviadas tiverem as respectivas computações terminadas. Sistemas de Informação – 2ª Série Programação Orientada a Objetos POO x Extruturada • Geralmente onde se emprega a POO também se emprega a Estruturada e vice-versa; • POO pode trazer mais facilidades; • Programadores mais experientes estão mais acostumados com a programação estruturada (resistência a mudança de paradigma); • Não confundir POO com Prog. Orientada a Eventos; Sistemas de Informação – 2ª Série Programação Orientada a Objetos POO x Extruturada O zelador pega a chave e abre a porta • Estruturada: Pensa-se automaticamente em como o zelador faz para abrir a porta utilizando a chave (cada verbo vira um procedimento); • POO: Pensa-se inicialmente nos objetos zelador, porta e chave, nas suas características (atributos) e nas ações que podem realizar (métodos) (cada substantivo vira um objeto); • Pode-se perceber a dificuldade de um programador acostumado a programação estruturada em mudar para POO. Sistemas de Informação – 2ª Série Programação Orientada a Objetos Vantagens da POO • Sensível redução no custo de manutenção do software; • Aumento na reutilização de código; • Programação Estrutura também pode apresentar estas características, tudo depende de como se programa, assim como também é válido dizer que não basta utilizar-se da POO para garantir os itens acima. Sistemas de Informação – 2ª Série Programação Orientada a Objetos Orientação a Objetos - Conceitos • Objetos: qualquer indivíduo, lugar, coisa, evento, tela, relatório ou conceito que seja aplicável ao projeto do sistema. Os objetos possuem dados e funcionalidades que definem seus comportamentos. São instâncias de suas respectivas classes. • Classe: Uma categoria de objetos semelhantes. Uma classe é, na verdade, uma planta baixa a partir da qual os objetos são criados. • Instância: Sinônimo de objeto. • Instanciar: Criar uma instância. Quando criamos um objeto dizemos que o instanciamos a partir de uma classe. Sistemas de Informação – 2ª Série Programação Orientada a Objetos Orientação a Objetos - Conceitos • Atributos: Valores guardados por um objeto ou uma classe. Um atributo é basicamente um único dado ou informação. Os atributos podem ser simples, como um número inteiro, ou podem ser objetos complexos, como um endereço ou um cliente. Cada objeto tem os seus próprios atributos que podem diferenciar em conteúdo de um objeto para outro. • Métodos: Procedimentos que um objeto ou classe realizam. Um método é semelhante a uma função ou procedimento em uma programação estruturada. Pode-se ter o mesmo método implementado de várias maneiras, o que irá diferenciá-los é a mensagem passada para o objeto. Sistemas de Informação – 2ª Série Programação Orientada a Objetos Orientação a Objetos - Conceitos • Abstração: A definição da interface de uma classe (o que ela sabe e faz) • Encapsulamento: O ocultamento da implementação do que uma classe/objeto sabe ou faz, sem que seja dito como é feito. • Mensagens: Informações que são trocadas entre os objetos. • Interface: Projeto de comunicação entre a classe/objeto e o mundo exterior. Grupo de mensagens que um objeto ou classe vai responder. • Herança: Permite que tiremos vantagens das similaridades entre classes representando relacionamentos do tipo “é” ou “é semelhante”. Sistemas de Informação – 2ª Série Programação Orientada a Objetos Orientação a Objetos - Conceitos • Superclasse: Quando a classe “B” herda as características da classe “A” dizemos que “A” é uma superclasse de “B”. • Subclasse: No exemplo acima dizemos que “B” é uma subclasse de “A”. • Herança Simples: Quando a classe herda características de uma única classe. • Herança Múltipla: Quando uma classe herda características de mais de uma classe. • Classe Concreta: Uma classe que possui objetos instanciados a partir dela. Sistemas de Informação – 2ª Série Programação Orientada a Objetos Orientação a Objetos - Conceitos • Classe Abstrata: Uma classe que não possui objetos instanciados a partir dela. • Redefinição: Termo usado para indicar que redefinimos atributos e/ou métodos nas subclasses para proporcionar um comportamento um pouco ou totalmente diferente. • Sobrecarga: Sinônimo de Redefinição. • Hierarquia de Classes: Um conjunto de classes relacionados por meio de herança. • Raiz: A classe superior em uma hierarquia. Sistemas de Informação – 2ª Série Programação Orientada a Objetos Orientação a Objetos - Conceitos • Persistência: Diz respeito ao armazenamento permanente dos objetos em disco. • Objeto Persistente: Um objeto que é salvo em um armazenamento permanente, tornando-o recuperável para uso futuro. • Objeto Transitório: Um objeto que não é persistente. • Associação: Relacionamento entre objetos. Por exemplo, clientes COMPRAM produtos. • Cardinalidade: Indica quantos objetos estão envolvidos em cada lado de um relacionamento. Sistemas de Informação – 2ª Série Programação Orientada a Objetos Orientação a Objetos - Conceitos • Agregação: Indica que um objeto é composto por outros. Exemplo: Um carro é composto por vários itens (pneus, peças, assessórios) • Colaboração: Para que determinados objetos funcionem adequadamente, precisam de uma maior interação com outros objetos. Exemplo: Para que um carro aumente a velocidade, o motor tem que aumentar a rotação, porém para que isto ocorra o acelerador tem que responder ao estímulo do usuário. • Acoplamento: Nível de dependência de um objeto em relação a outro, principalmente quanto aos detalhes de implementação. Quanto menor melhor. Sistemas de Informação – 2ª Série Programação Orientada a Objetos Orientação a Objetos - Conceitos • Coesão: Quanto maior o esforço para explicar uma classe, menor a coesão. As classes devem ser explicadas da forma mais simples possível, ou seja, quanto maior a coesão, melhor. • Polimorfismo: Diz respeito a possibilidade de tratar classes diferentes como se fossem a mesma, ou seja, a própria linguagem se encarrega de saber qual é a classe em questão.