Programação Orientada a Objetos O FOCO NO MUNDO REAL
Orientação a objetos A orientação a objetos (OO) foi concebida na década de 70. Origem na linguagem SIMULA-67 (década de 60 - Noruega), que já implementava alguns conceitos da OO. SIMULA-68 foi a primeira linguagem a suportar os conceitos da OO. Smaltalk, criada pela Xerox, popularizou e incentivou a OO. Outras linguagens OO: C++, Object Pascal (Delphi), C#, Java... Java, de fato, popularizou a Orientação a Objetos.
Orientação a objetos Quando precisamos modelar um sistema para solucionar um grande problema, este problema deve ser dividido em partes menores. O modelo OO divide um problema em partes menores, para facilitar a resolução.
Orientação a objetos A criação da Programação Orientada a Objetos (POO ou OOP), eleva a programação e o desenvolvimento de sistemas para um novo patamar. A OO é um mecanismo moderno que ajuda a definir a estrutura de programas baseada nos conceitos do mundo real, sejam eles reais ou abstratos. A OO permite criar programas componentizados, separando as partes do sistema por responsabilidades e fazendo com que essas partes se comuniquem entre sí, por meio de mensagens. Essas partes do sistemas são chamadas de OBJETOS.
Orientação a objetos A OO é mais intuitiva e fácil de aprender do que as técnicas tradicionais, pois foca o problema em conceitos do mundo real. Dentre as vantagens que a OO proporciona, podemos destacar:
Orientação a objetos aumento de produtividade reuso de código redução das linhas de código programadas separação de responsabilidades componentização maior flexibilidade do sistema facilidade na manutenção, dentre outras vantagens.
Orientação a objetos A OO introduz e enfatiza os seguintes conceitos: Objeto Classe Mensagem Abstração Encapsulamento Herança Polimorfismo
Objetos Usamos o termo objeto para representar um determinado elemento do mundo real. Como exemplos de objetos, podemos citar os objetos físicos (um livro, uma mercadoria), funções de pessoas para os sistemas (cliente, vendedor), eventos (uma compra, um telefonema), interações entre outros objetos (um item de uma nota fiscal é uma interação entre uma compra e um produto do estoque) e lugares (loja matriz, revenda norte).
Objetos Por exemplo, vamos considerar um cachorro como nosso objeto de estudo:
Objetos Analisando este objeto, o cachorro, podemos deduzir que o mesmo possui algumas características que pertencem apenas a ele próprio. Por exemplo, um Um nome, Uma idade, Um comprimento de pêlos, Uma cor dos pelos, Uma cor dos olhos, Um peso
Objetos As características que descrevem um objeto são chamadas de atributos
Objetos Além do conjunto de características que descrevem o cachorro, podemos também identificar um conjunto de ações que ele é capaz de executar: Latir, Babar, Correr em círculos, Pegar a bola, Sentar, Comer, Dormir.
Objetos As ações que um objeto pode executar são chamadas de métodos.
Objetos A única maneira de interagir com os objetos é através dos métodos que ele disponibiliza. Para interagir com o cachorro, utilizamos os métodos que relacionamos acima: para alimentá-lo, utilizamos o método comer, para brincar com ele, utilizamos o método pegar a bola, etc.
Objetos Atributos e métodos: Os objetos do mundo real possuem propriedades que possuem valores. Estes valores definem o estado do objeto. As propriedades recebem o nome de atributos em OO. Podemos dizer que os atributos dos objetos são variáveis ou campos que armazenam os diferentes valores que as características dos objetos podem conter.
Objetos O estado de um objeto é o conjunto de valores de seus atributos em um determinado instante. O comportamento de um objeto é como ele age e reage em termos de suas mudanças de estado e troca de mensagens com outros objetos. O cachorro do nosso exemplo poderia ser representado pelos seguintes atributos: Nome Idade Cachorro Comprimento dos pêlos Cor dos pêlos Cor dos olhos Peso Pluto 2 anos curtos marrom preto 5Kg
Objetos Um outro objeto cachorro apresentaria valores diferentes para os mesmos atributos, por exemplo: Cachorro Nome Idade Comprimento dos pêlos Cor dos pêlos Cor dos olhos Peso Rabugento 5 anos curtos beje castanho 6Kg
Objetos Métodos: os métodos são as ações que o objeto pode realizar Um objeto exibe algum comportamento (executa uma operação) quando recebe um estímulo de outro objeto. Um objeto requisita a ação de algum outro objeto, enviando uma mensagem para ele.
Objetos Defina os atributos e métodos para os seguintes objetos: a) gato, cavalo, baleia, morcego, formiga b) Cadeira, porta, armário, c) Geladeira, impressora d) Quadrado, círculo
Notação Nome do obj Nome Idade Peso Cor olhos Comer Dormir ATRIBUTOS MÉTODOS
Classes Uma classe representa um conjunto de objetos que possuem características e comportamentos comuns e de agora em diante, diremos que um objeto é uma instância de uma determinada classe, ou seja, criaremos nossos objetos baseados nas características definidas nas classes. A ênfase da metodologia orientada a objetos é dada na criação das classes, e não dos objetos, como se poderia pensar pelo nome.
Classes Objetos de mesma classe possuem a mesma definição tanto para métodos quanto para atributos. Tomemos uma classe gatos formada de objetos gato. Estes objetos possuem as seguintes características: nome, idade, peso, cor de pelos, cor de olhos e comprimento de pelos. Além disso, o objeto possui as seguintes ações: miar, comer, dormir, subir na árvore. CLASSE GATOS
Classes Muitos objetos do mundo real possuem características comuns e podem ser agrupados de acordo com elas. Uma classe representa um gabarito (MODELO) para muitos objetos e descreve como estes objetos estão estruturados internamente. As classes Cães e Gatos possuem características e métodos comuns ex: Características comuns: nome, idade, peso, cor de pêlos, cor de olhos e comprimento de pêlos, Métodos comuns: pegar a bola, comer, dormir.
Classes Subclasse e superclasse. Ex: superclasse de mamíferos: SUPERCLASSE MAMÍFEROS SUBCLASSE GATOS SUBCLASSE ROEDORES SUBCLASSE EQUINOS SUBCLASSE CÃES
Classes Dentro da SuperClasse Mamíferos temos pelo menos 4 Subclasses: características em comum: nome, idade, peso, cor dos olhos cor dos pêlos. métodos em comum: comer, Sentar, dormir.
Classes Podemos distinguir quatro categorias diferentes de animais: cães gatos, equinos roedores Existem sete objetos na super classe mamíferos, sendo distribuídos em quatro subclasses Essa é a diferença entre classe e objeto: a classe é um modelo e todos os objetos daquela classe possuem atributos comuns, mas esses atributos possuem valores distintos, e os métodos também são comuns.
Classes Só serão definidos no objeto os atributos e métodos particulares desse objeto que não são atribuídos aos outros objetos da mesma classe. As classes das quais as outras dependem ANCESTRAIS As classes originadas a partir de outra DESCENDENTES A classe mamíferos tem: um ancestral (animais) dois descendentes (cães e gatos) Em cada descendente só é preciso descrever os atributos e métodos que apresentam alteração em relação à descrição do ancestral.
ANIMAIS Nome Idade Peso Cor olhos Comer Dormir ATRIBUTOS MÉTODOS AVES MAMÍFEROS RÉPTEIS Cor penas Tam penas Cor pêlos Comprim. pelos Tipo escamas Tam cauda Botar ovos CÃES Sentar Amamentar GATOS Rastejar Latir Pegar bola Miar Subir na árvore
As classes são definições de como os objetos devem ser e não existem na realidade. Somente os objetos têm existência. Ex: quando vamos mostrar nosso cachorro a alguém, não dizemos esse é um cão, e sim esse é o pluto, ou rabugento. O que se pode ver não é uma classe de seres,mas um cachorro específico, um objeto
Nome CLASSE ATRIBUTOS MÉTODOS Comer
Instanciação: A instanciação é quando a classe produz um objeto, como se ela fosse uma espécie de modelo ou gabarito para a criação de objetos. objeto é a instância de uma classe. Pelo exemplo que estamos estudando, cada cachorro que for armazenado é um novo objeto, uma nova instância da classe Cães. A classe serve de modelo para a criação de novos objetos.
INSTANCIAÇÃO: CLASSE CÃES Latir Pegar bola PLUTO REX TOTÓ RABUGENTO PULGUENTO
UMA CLASSE COM DUAS INSTÂNCIAS CLASSE CÃES Nome Idade Comp pelos Cor pelos Cor olhos peso Latir Pegar bola CÃO A Nome Idade Comprimento dos pêlos Cor dos pêlos Cor dos olhos Peso CÃO B Nome Idade Comprimento dos pêlos Cor dos pêlos Cor dos olhos Peso Pluto 2 anos curtos marrom preto 5Kg Rabugento 5 anos curtos beje castanho 6Kg
Classes puras ou abstratas: Classes puras são classes das quais os objetos nunca são instanciados diretamente, mas sempre por uma classe descendente dela. Essas classes são criadas para facilitar o processo de estruturação. Ex: classe Pessoa, que contém: atributos (nome, endereço, telefone, etc.) métodos (alteração de endereço, imprimir ficha, etc.) necessários para manusear dados de pessoas em um sistema de informação. A partir dessa classe genérica, criam-se classes descendentes específicas para manusear funcionário, gerente, etc.
FUNCIONÁRIO PESSOA GERENTE A classe Pessoa nunca terá um objeto a ela instanciado, ela só existe para unificar todos os atributos e métodos comuns as classes Gerente e Funcionário evitando assim a redundância. Pelo exemplo acima, Pessoa é uma classe pura. CLASSE PURA classe-&-classe CLASSE QUE PODE SER INSTANCIADA classe-&-objeto
Visibilidade de atributos e métodos + visibilidade pública: significa que todos têm acesso podendo o atributo e/ou método ser utilizado por método declarados dentro de outras classes. É parte da interface de uma classe e é visível por qualquer parte do código; # visibilidade protegida: significa que o atributo e/ou método é acessado através de métodos dentro da mesma classe e por métodos de classes ao longo do pacote no qual a classe é definida; - visibilidade privada: declaração que é parte da interface de uma classe, mas não é visível a quaisquer outras classes o atributo e/ou método pode apenas ser acessado por métodos declarados dentro da mesma classe.
MENSAGEM
Mensagem Um objeto por si só não significa muito em um sistema. Para ter algum sentido e valor esses objetos precisam interagir e comunicar-se entre si. Os objetos se comunicam por meio de mensagens. Quando um objeto A quer se comunicar com um objeto B é enviada uma mensagem de A para B. ATRIBUTOS Nome QUAL O SEU NOME? ATRIBUTOS Nome MÉTODOS FALAR mensagem MÉTODOS FALAR
Mensagem Enviar uma mensagem significa executar um método. Então, se A envia uma mensagem para B, podemos entender como o objeto A executando um método do objeto B. As mensagens são compostas por três partes: Objeto a quem a mensagem é endereçada Nome do método a ser chamado Parâmetros que o método recebe
ABSTRAÇÃO
Abstração O termo abstração, aplicado ao desenvolvimento de sistemas, significa a grosso modo que só deve ser representado aquilo que vai ser usado. Pelo princípio da abstração nós isolamos os objetos que queremos representar do ambiente complexo em que se situam, e nesses objetos representamos só as características que são relevantes para o problema em questão. Ex: Automóvel (Mecânico, Depto. de trânsito, consumidor)
Abstração Por exemplo: toda pessoa tem um atributo para cor dos olhos, mas em um sistema de folha de pagamento, essa informação não é relevante, portanto, ela não será incluída na relação de características de pessoas que queremos armazenar em nossosistema. Da mesma maneira, apesar de uma boa parte das pessoas ter animais de estimação, é completamente irrelevante para um sistema de folha de pagamento implementar um objeto para armazenar animais de estimação, e relacioná-los com as pessoas.
ENCAPSULAMENTO
Encapsulamento Na OO, encapsulamento é o mecanismo utilizado para disponibilizar métodos que operam sobre os dados e que protegem o acesso direto indevido aos atributos de uma instância fora da classe onde estes foram declarados. O encapsulamento ajuda a prevenir o problema de interferência externa indevida sobre os dados de um objeto, como objetos que possam alterar os dados de outros objetos indevidamente.
Ex: Alteração de uma conta bancária O saldo certamente não pode ser alterado ou manipulado diretamente, mas sim através de métodos adequados para isso, como métodos que fazem lançamentos de débitos e créditos. A alteração direta do saldo causaria um problema de cálculos e inconsistência de dados. A principal vantagem do encapsulamento é esconder a complexidade do código. Outra, é proteger o dados. ATRIBUTOS Saldo MÉTODOS Extrato Debitar Creditar
Herança A palavra herança, conforme um dicionário da lingua portuguesa, significa: Aquilo que se herda; Aquilo que se transmite por hereditariedade. Um exemplo simples de explicar a herança é a própria genética. Ou seja, um filho herda características genética dos pais, e por sua vez, repassa essas características aos seus filhos. Na OO, Herança é o mecanismo pelo qual uma classe obtém as características e métodos de outra para expandi-las ou especializálas de alguma forma, ou seja, uma classe pode herdar características, métodos e atributos de outras classes. Da mesma maneira uma transmite suas características para outras classes, tornando aquelas que recebem suas características suas herdeiras
Herança Herança significa que todos os atributos e métodos programados no ancestral já estarão automaticamente presentes em seus descendentes sem necessidade de reescrevê-los.
Herança Herança Simples A herança é denominada simples quando uma classe herda características de a PESSOA Nome RG CPF Endereço FUNCIONÁRIO CLIENTE Nome RG CPF Endereço Salário Limite Credito Preferências
Herança Herança Múltipla A herança é denominada múltipla quando uma classe herda características de duas ou mais superclasses.
PESSOA Nome RG CPF Endereço FUNCIONÁRIO Nome RG CPF Endereço Salário CLIENTE Limite Credito Preferências FUNCIONÁRIO CLIENTE - CLIENTE Desconto Limite Credito especial Preferências
POLIMORFISMO Miau!
O Polimorfismo é a capacidade de uma variável se referir em tempo de execução a objetos de diversas classes. Podemos definilo também como sendo o nome dado à capacidade que objetos diferentes têm de responder a uma mesma mensagem. Uma mesma mensagem pode apresentar formas de execução diferentes, próprias de cada objeto. Com esta característica o usuário pode enviar uma mensagem genérica e abandonar detalhes sobre a exata implementação sobre o objeto receptor.
Polimorfismo GRAVAR
O polimorfismo ocorre quando um método que já foi definido no ancestral é redefinido no descendente com um comportamento diferente.