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.
Download

poo - Unipar