210 likes | 353 Views
Programação Orientada a Objetos. Sistemas de Informação – 2ª Série. Histórico / Programação. Sistemas de Informação – 2ª Série Programação Orientada a Objetos. mudanças para compensar maior complexidade dos programas;
E N D
Programação Orientada a Objetos Sistemas de Informação – 2ª Série
Histórico / Programação Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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;
Histórico / POO / Simula Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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;
Histórico / POO / SmallTalk Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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.
Histórico / POO / Outras Sistemas de Informação – 2ª Série Programação Orientada a Objetos • C++, baseada em C; • Objetive-C, também baseada em C; • Pascal orientado a objetos; • Eiffel; • TOOL, no Brasil
Histórico / POO / Comercialização Sistemas de Informação – 2ª Série Programação Orientada a Objetos • Smalltalk-80 -> ParcPlace empresa da Xerox; • Digitalk -> Digitalk.
Histórico / POO x Estruturada Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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.
Histórico / POO x Estruturada Sistemas de Informação – 2ª Série Programação Orientada a Objetos • Estruturada • Resolução de problemas através de algoritmos: • Busca; • Otimização e resolução numérica de equações.
POO Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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;
POO Sistemas de Informação – 2ª Série Programação Orientada a Objetos • É 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.
POO x Extruturada Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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;
POO x Extruturada Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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.
Vantagens da POO Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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.
Orientação a Objetos - Conceitos Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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.
Orientação a Objetos - Conceitos Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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.
Orientação a Objetos - Conceitos Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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”.
Orientação a Objetos - Conceitos Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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.
Orientação a Objetos - Conceitos Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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.
Orientação a Objetos - Conceitos Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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.
Orientação a Objetos - Conceitos Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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.
Orientação a Objetos - Conceitos Sistemas de Informação – 2ª Série Programação Orientada a Objetos • 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.