Upload
jessica
View
212
Download
0
Embed Size (px)
DESCRIPTION
conceito
Citation preview
Programação Orientada a ObjetosDEFINIÇÕES
Motivação
⑨ A programação Orientada a objetos (POO):
⑨ É um paradigma de programação
⑨ traz para o desenvolvimento de programas conceitos mais semelhantes ao que encontramos no nosso dia a dia, tornando a tarefa programação mais intuitiva;
⑨ Objeto:
⑨ qualquer artefato sobre o qual se pode armazenar informações e efetuar tarefas.
Programação Orientada a Objetos
⑨ Mais formalmente:
⑨ O termo orientação a objetos pressupõe uma organização de software em termos de coleção de objetos discretos incorporando estrutura e comportamento próprios.
⑨ Esta abordagem de organização é essencialmente diferente do desenvolvimento tradicional de software, onde estruturas de dados e rotinas são desenvolvidas de forma apenas fracamente acopladas.
Programação Orientada a Objetos
⑨ Histórico
⑨ Termo criado por Alan Key, autor da linguagem de programação SmallTalk.
⑨ A primeira linguagem a usar os conceitos de OO Simula76, criada por Ole Johan Dahl e Kristen Nygaard em 1967.
⑨ Alguns exemplos de linguagens modernas utilizadas por grandes empresas em todo o mundo que adotaram essas idéias: Java, C#, C++, Object Pascal (Delphi), Ruby, Python, Lisp, PHP...
⑨ A maioria delas adota as idéias parcialmente, dando espaço para o antigo modelo procedural de programação, como acontece no C++ e no Object Pascal
⑨ Este tipo de linguagem segue a idéia de utilizar uma linguagem previamente existente como base e adicionar novas funcionalidades a ela.
⑨ Outras são mais "puras", sendo construidas do zero focando-se sempre nas idéias por trás da orientação a objetos como é o caso das linguagens SmallTalk, JAVA e Python onde TUDO é orientado a objetos.
Conceitos Básicos
⑨ A filosofia da Orientação a Objetos
⑨ A POO foi criada para tentar aproximar o mundo real do mundo virtual:
⑨ a idéia fundamental é tentar simular o mundo real dentro do computador.
⑨ Na POO o programador é responsável por moldar o mundo dos objetos e explicar para estes objetos como eles devem interagir entre si.
⑨ Os objetos "conversam" uns com os outros através do envio de mensagens, e o papel principal do programador é especificar quais serão as mensagens que cada objeto pode receber, e também qual a ação que aquele objeto deve realizar ao receber aquela mensagem em específico.
Conceitos Básicos
⑨ Classes, atributos e métodos
⑨ Uma classe é uma abstração que define um tipo de objeto
⑨ Os Atributos são variáveis que estarão dentro de cada um dos objetos desta classe e podem ser de qualquer tipo.
⑨ Os Métodos definem que tipo de ações esse tipo de objeto é capaz de realizar
Conceitos Básicos
⑨ Uma analogia
⑨ Classes na Biologia: um animal é uma classe, e tem suas características:
⑨ é um ser vivo capaz de pensar
⑨ precisa se alimentar para viver
⑨ O Ser Humanos e os pássaros são sub-classes de animais: tem todas as características de um animal, mas também tem algumas peculiaridades suas
⑨ Uma classe não tem vida. Os seres pertencentes a esta classe é que possuem as características que os indica como participantes desta classe.
⑨ O cachorro é um Objeto (ou instância) da classe Cachorro.
⑨ A classe Cachorro não pode latir, não pode fazer xixi no poste, ela apenas especifica e define o que é um cachorro.
Conceitos Básicos
⑨ Uma analogia
⑨ A criação de uma nova Classe é dividida em duas partes: os seus atributos e os seus métodos.
⑨ Atributos:
⑨ a classe Cachorro poderá ter o atributo nome que será do tipo String. Assim, cada Objeto desta classe terá uma variável própria chamada nome, que poderá ter um valor qualquer
⑨ Métodos:
⑨ Os objetos se comunicam através de mensagens. Quando um objeto desta classe receber uma mensagem de algum outro objeto contendo o nome de um método, a ação correspondente a este método será executada.
Exemplo
⑨ A classe carro
⑨ Atributos
⑨ Marca
⑨ Modelo
⑨ Cor
⑨ Métodos
⑨ Acelerar
⑨ Frear
⑨ Travar portas
Conceitos Básicos
⑨ Construtores
⑨ Um construtor é um método com uma função especial: ele serve para inicializar os atributos e é executado automaticamente sempre que você cria um novo objeto.
⑨ Quando você especifica os atributos de uma classe, você apenas diz ao sistema algo como "objetos desta classe Pessoa vão ter uma variável chamada Nome que é do tipo String, uma variável chamada idade que é do tipo inteiro, etc, etc".
⑨ Mas estas variáveis não são inicializadas, elas só serão criadas no construtor.
⑨ Normalmente, a sintaxe é algo parecido com isto:
⑨ ObjetoJoao = new Pessoa( "João", 13 );
Destrutores
⑨ Destrutor:
⑨ É um método que é chamado quando um objeto da classe encerra-se.
⑨ São usados para eliminar quaisquer variáveis dinamicamente alocadas pelo objeto.
⑨ Podem executar também diversas outras tarefas de “limpeza”.
⑨ Em C++ o nome de um destrutor consiste do til (~), seguido pelo nome da classe.
Herança
⑨ Classes na Biologia:⑨ Um ser humano é um animal, mas possui algumas características próprias.
⑨ Para representar estas características próprias mantendo as características da classe animal utilizamos a Herança.
⑨ Classe x Subclasse⑨ Uma classe pode ampliar as características de outra classe, estendendo-a.
⑨ Desta forma, a classe SerHumano será uma especialização (ou subclasse) da classe Animal.
⑨ A classe Animal seria a classe pai da serHumano, e logicamente, a classe SerHumano seria a classe filha da Animal.
⑨ Uma classe pode sempre ter vários filhos, mas normalmente as linguagens de programação orientadas a objetos exigem que cada classe filha tenha apenas uma classe pai.
⑨ Algumas linguagens permitem que uma classe herde as características de varias classes (herança múltipla)
Polimorfismo
⑨ Muitas formas:
⑨ Um dos conceitos mais “difíceis” de entender na OO.
⑨ Vem da junção de 2 termos gregos:
⑨ Poli – Muito
⑨ Morfo – Forma
⑨ Na orientação a objetos:
⑨ Um mesmo tipo de objeto, sob certas condições, pode realizar ações diferentes ao receber uma mesma mensagem
⑨ Ou seja:
⑨ Apenas olhando o código fonte não sabemos exatamente qual será a ação tomada pelo sistema, sendo que o próprio sistema é quem decide qual método será executado, dependendo do contexto durante a execução do programa.
Bibliografia
⑨ Savitch, Walter – C++ Absoluto, Addison Wesley, 2004