View
216
Download
0
Category
Preview:
Citation preview
1LibreOffice Productivity Suite
Orientação a Objetos
Thiago Messias EvangelistaUESC – Universidade Estadual de Santa CruzVersion 2012-11-08
4LibreOffice Productivity Suite
História
O.O. não é uma idéia nova - 1960s;Alan Kay, criador do termo: “Programação Orientada a Objetos”;Ivan Sutherland(Computação Gráfica)
Já utilizara no glossário do Sketchpad(1963) definições de “objeto” e “instância”
Kristen Nygaard e Ole-Johan Dahl Simula 67 – 60's;
Primeira linguagem a realmente utilizar os conceitos de O.O.;
5LibreOffice Productivity Suite
História
Simula 67 – 60'sUma revisão melhorada do Simula I;Introduzia:
Noções de classe, instância e objetos;
Subclasses;
Métodos Virtuais;
Co-rotinas;
Possuia um “garbage collection” que foi “emprestado” da linguagem funcional Lisp;Usada para Modelagem Física;Utilizada para a criação de modelos para estudo e melhora do movimento de navios e de seus conteúdos através dos portos de carga;Mais tarde iria influenciar linguagens como: Smalltak, Object Pascal e C++;
6LibreOffice Productivity Suite
História
Daí pra frente, surgem:Smalltalk;C++;Delphi;C#;Python;Ruby;Java;Ada;
7LibreOffice Productivity Suite
Conceitos
“- E agora? O que preciso saber para programar O.O.?”
- Aluno do 3º semestre de Computação
8LibreOffice Productivity Suite
Conceitos
Tipos Abstratos de Dados:Propoe reduzir a informação necessária para a criação de um algoritmo através da abstração das variáveis envolvidas em uma única entidade fechada;
Proporciona:
Melhor compreensão dos algoritmos;
Os projetos puderam alcançar alta complexidade mantendo-se a legibilidade;
Conceito altamente recomendado;
Posteriormente, essa metodologia foi incorporada à LP: A conhecida Orientação a Objetos
9LibreOffice Productivity Suite
Conceitos
Classe:Define:
Um tipo de “coisa”(Objeto / Instância);
O que esses objetos possuem como características(Atributos);
O tipo de ações que esses objetos são capazes de realizar(Métodos);
Objeto:Observe que uma classe “não tem vida”, ela é
um conceito;
Já os Objetos(felinos, humanos... Da classe Mamíferos)
poussem;
10LibreOffice Productivity Suite
Conceitos
Atributos:É o trecho da instância, onde estão especificados (quantativa ou qualitativamente) as características dele;
Seguindo o exemplo, poderíamos ter:
Account
Atributos
Holder: Xico BrunoNumber: 64.123-1Credit Line: Banco da PraçaBalance: + R$ 1053,73
Xico's AccountObjeto
Classe
11LibreOffice Productivity Suite
Conceitos
Métodos:Serão as ações que poderão ser excutadas no/com objetos da classe;
Eles serão importantes para o Encapsulamento(Métodos Get/Set);
Construtores / Destrutores:São os responsáveis por incializar os atributos do objeto que está sendo instanciado;
Em algumas linguagens é necessário que sejam criados
destrutores para “destruir” instâncias;
12LibreOffice Productivity Suite
Conceitos
Encapsulamento:Consiste na separação de aspectos internos e externos de um objeto;
Os famosos Modificadores de Acesso;
Exemplo: você não precisa conhecer os detalhes dos circuitos de um telefone para utilizá-lo. A carcaça do telefone encapsula esses detalhes, provendo a você uma interface mais amigável (os botões, o monofone e os sinais de tom);
Isso permite que o programador possa determinar a forma como os dados poderão ser “vistos” e modificados;
13LibreOffice Productivity Suite
Conceitos
Encapsulamento:Public:
O modificador public deixará visível a classe ou membro para todas as outras classes, subclasses e pacotes do projeto Java.
Private:
O modificador private deixará visível o atributo apenas para a classe em que este atributo se encontra.
Protected:
O modificador protected deixará visível o atributo para todas as outras classes e subclasses que pertencem ao mesmo pacote. A principal diferença é que apenas as classes do mesmo pacote tem acesso ao membro. O pacote da subclasse não tem acesso ao membro.
Padrão:
Por padrão, a linguagem Java permite acesso aos membros apenas ao pacote em que ele se encontra.
14LibreOffice Productivity Suite
Conceitos
Encapsulamento:Em Java, podemos encontrar a seguintes visiblidades:
Global
simPublic
Modificador Pacote SubclasseClasse
Protected
Vazio (Padrão)
sim
sim
sim
sim
sim
sim
sim
sim sim
nãoPrivate não não
não
não
não
15LibreOffice Productivity Suite
Conceitos
Herança:É o mecanismo pelo qual uma classe (sub-classe) pode estender outra classe (super-classe), aproveitando seus comportamentos (métodos) e variáveis possíveis (atributos).
O mesmo se aplica na Herança Múltipla, contudo não são todas as linguagens que implementam totalmente essa funcionalidade;
Super-Classe:Mamífero
Sub-Classe:Humano
16LibreOffice Productivity Suite
Conceitos
Polimorfismo:Poli(Muitas) + Morfa(Forma);
Existem 4 tipos, contudo nem todas as linguagens O.O. as implementam;
Polimorfismo
Paramétrico Inclusão Sobrecarga Coerção
Universal Ad-Hoc
17LibreOffice Productivity Suite
Conceitos
Polimorfismo:Universal:
Trabalha potencialmente num conjunto infinito de tipos de modo disciplinado;
Possui duas formas: paramétrico e inclusão;
Ad-Hoc
Não existe um modo único e sistemático de determinar o tipo de resultado de uma função em termos dos tipos dos seus argumentos de entrada;
É uma forma limitada de polimorfismo;
Possui duas formas: coerção e sobrecarga;
18LibreOffice Productivity Suite
Conceitos
Polimorfismo:Universal:
Paramétrico:
Um mesmo objeto pode ser utilizado uniformemente como parametro em diferentes contextos sem necessidade de alteração;
Métodos com essas características (chamados de métodos genéricos);
O PHP, por exemplo, não requer isso, já que não utiliza a tipagem explícita:
$var pode receber uma string, tornando-se no tipo string e em seguida receber um inteiro, tornando-se um em um tipo inteiro;
Inclusão:
Se uma classe-mãe Brinquedo se especializa em uma classe-filha Carro, uma outra classe ControleRemoto, que possui um atributo do tipo Brinquedo poderá reconhecer uma instancia da classe-filha;
Exemplo a seguir: ->
20LibreOffice Productivity Suite
Conceitos
Polimorfismo:Ad-Hoc:
Coerção:
Meio utilizado para contornar a rigidez dos tipos monomórficos(Algol68);
Existe um mapeamento interno entre tipos;
Exemplo:
Se o operador soma é definido como tendo 2 parâmetros reais. Um inteiro e um real são passados como parâmetros, o inteiro é “coargido” para um real;
Sobrecarga:
Permite que um nome de função seja utilizado mais do que uma vez com diferentes tipos de parâmetros
Exemplo:
Uma função soma pode ser sobrecarregada para operar com dois parâmetros inteiros e dois reais.
21LibreOffice Productivity Suite
Conceitos
Interface:É o alicerce da programação modular;
Na O.O., a interface de um objeto consiste de um conjuto de métodos que um objeto deve suportar(O que ocorre com o Java);
23LibreOffice Productivity Suite
Benefícios / Limitações
Benefícios:Divisão de código um pouco mais lógica e melhor encapsulada do que a empregada nos sistemas não orientados a objetos;
Isto torna a manutenção e extensão do código mais fácil e com menos riscos de inserção de bugs;
Fácil reaproveitamento de código;
Limitações:
Dificilmente uma linguagem orientada a objetos obterá um desempenho superior à uma linguagem não orientada a objetos;
(Fator Aprendizagem) O programador inciante precisa ter bem estabelecido uma série de conceitos sobre o paradigma;
24LibreOffice Productivity Suite
Referências
http://www.python-course.eu/object_oriented_programming.php
http://en.wikipedia.org/wiki/Object-oriented_programming
http://en.wikipedia.org/wiki/Sketchpad
http://www.dca.fee.unicamp.br/cursos/POOCPP/node1.html
http://www.hardware.com.br/artigos/programacao-orientada-objetos/
http://pt.wikipedia.org/wiki/Orienta%C3%A7%C3%A3o_a_objetos
http://pt.wikipedia.org/wiki/Simula_67
http://pt.wikipedia.org/wiki/Tipo_Abstrato_de_Dado
http://www.tiexpert.net/programacao/java/public-private-protected.php
http://pt.wikipedia.org/wiki/PHP#Polimorfismo_Param.C3.A9trico
http://www.metropoledigital.ufrn.br/aulas/disciplinas/poo/aula_12.html
25LibreOffice Productivity Suite
All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License (unless otherwise specified). "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos and icons are subject to international copyright laws. The use of these therefore is subject to the trademark policy.
Obrigado
Dúvidas?Sugestões?
Recommended