• Nenhum resultado encontrado

TOO completo

N/A
N/A
Protected

Academic year: 2021

Share "TOO completo"

Copied!
85
0
0

Texto

(1)

Conceitos básicos- Revisão

Prof. Marina Laís

Técnicas de Orientação Objeto

(T.O.O)

(2)

PROGRAMAÇÃO

ORIENTADA A

(3)
(4)

Desenvolvimento de Software tradicional

Programas

Processos

dados

(5)

Desenvolvimento tradicional

x orientado a objetos

Programa

Classes

Atributos

Operações

Programa

Processos

Dados

(6)

Programação

(7)

Programação

Orientada a Objetos?

É UM PARADIGMA

DE PROGRAMAÇÃO

(8)

Programação

Orientada a Objetos?

(9)

Programação

Orientada a Objetos?

• Mais fácil descrever o mundo real através dos objetos

• O encapsulamento facilita a manutenção do código

• Maior facilidade para • Complexidade no

aprendizado em comparação com a programação

estruturada

• Seus conceitos são de difícil compreensão

(10)

Programação

Orientada a Objetos?

RESUMO

POO é um paradigma de programação que usa

"objetos" compostos por campos e métodos,

justamente com suas interações - para projetar

programas de computadores.

http://en.wikipedia.org/wiki/Object-oriented_programming

POO é uma forma especial de programar, mais

próximo de como expressaríamos as coisas na vida

real do que outros tipos de programação.

http://www.criarweb.com/artigos/215.php

POO é organizar o mundo real como uma coleção de

objetos que incorporam estrutura de dados e um

(11)

Desenvolvimento Orientado

a Objetos

Visualiza e representa o mundo real como um

conjunto de

objetos

que interagem entre si para que determinadas

operações sejam realizadas.

Parar

(12)

ABSTRAÇÃO

Abstração é o processo de extrair as características essenciais de um objeto real. A abstração é necessária para se ter um

modelo fiel da realidade sobre a qual se possa operar.

(13)

Abstração

Eliminação

do

irrelevante e

amplificação do

essencial

(14)

Exemplo – abstração

Registros

de oficina

Registros

em casa

Registros

Detran

(15)

Abstração

É o mecanismo que nos permite representar uma realidade

complexa em termos de um modelo simplificado, de modo que

detalhes irrelevantes possam ser suprimidos.

Processo de filtragem de detalhes sem importância do objeto, para

que apenas as características apropriadas que o descrevem

permaneçam.

(16)

CLASSE

Uma classe é uma estrutura que abstrai um conjunto

de objetos com características similares. É como um

projeto, a partir dela que criamos os objetos

(17)

Classes

Classes: “fábricas” de objetos.

Exemplificando, temos que Pessoa é uma classe e João é um objeto

(instância) da classe Pessoa.

Um carro é uma classe; “meu carro” é um objeto.

(18)

Classes – Fábrica de objetos.

(19)

Classe:

Atributos

Os Atributos em Programação Orientada a Objetos

são os elementos que definem a estrutura de uma

classe, ou seja suas características.

(20)

Classe:

Objeto

Objetos são instâncias de classes. É através deles que (praticamente) todo o processamento ocorre em sistemas

implementados com linguagens de programação orientadas a objetos.

Programação orientada a objetos uma abordagem com Java.

No paradigma de orientação a objetos, tudo pode ser

potencialmente representado como um objeto. Sob o ponto de vista da programação orientada a objetos, um objeto não é

muito diferente de uma variável normal.

(21)

Orientação a Objetos em Java

Classe

Aluno

Nome Matrícula Nota Média João 193.31.098-7 7,6 Maria 195.31.022-5 8,7

(22)

Orientação a Objetos em Java

• Objetos do mundo real possuem duas

características:

estado

e

comportamento.

• Exemplos:

cachorros 

estado

: nome, cor, raça

comportamento

: latir, correr

Bicicletas 

estado

: marcha atual, velocidade atual

comportamento

: trocar marcha, aplicar

(23)

Orientação a Objetos em Java

• A

unidade fundamental

de programação em orientação a

objetos (POO) é a

classe

.

• Classes contém:

– Atributos

: determinam o

estado

do objeto;

– Métodos

: semelhantes a procedimentos em

linguagens convencionais, são utilizados para

(24)

Orientação a Objetos em Java

• Objetos

– São

instâncias da classe

.

– Sob o ponto de vista da programação orientada a

objetos, um objeto não é muito diferente de uma

variável normal.

• Um programa orientado a objetos é composto

por um conjunto

de objetos que interagem

entre si

(25)

Orientação a Objetos em Java

• As classes provêem a

estrutura para a construção de

objetos

- estes são ditos

instâncias

das classes

Classe

Aluno

Nome Matrícula Nota Média setNome(nome) getNome() ... atributos métodos

Instâncias

João 193.31.098-7 7,6 Maria 195.31.022-5 8,7

(26)

Classes e objetos em Java

[acesso] class NomeDaClasse { Atributos Construtores Métodos }

Definição da

classe

O conteúdo da

classe

(27)

Orientação a Objetos em Java –

Classe em Java

// Class Lampada public class Lampada {

// Atributos boolean acesa;

// Métodos

public void ligar() { acesa = true; }

public void desligar() { acesa = false; } }

(28)

Classes e objetos em Java

 Realizada com a palavra reservada

New.

 Processo conhecido como criação

de uma instância de uma classe.

 Tipo da variável pode diferir do

objeto realmente criado (desde que estejam relacionados por herança).

Produto p = new Produto();

Declaração do

tipo da variável Variável

Objeto real criado

(29)

Orientação a Objetos em Java

– Criando objetos com Java

Para instanciarmos um novo objeto devemos utilizar o operador new, conforme modelo abaixo:

NomeDaClasse nomeDoObjeto = new NomeDaClasse(); Lampada lamp1 = new Lampada();

(30)

MÉTODO

Um método é uma subrotina que é executada por um

objeto ao receber uma mensagem. Os métodos

(31)

Definem as operações que podem ser invocadas em um objeto.

Podem receber parâmetros ou não.

public String getNomeCurso()

public void setNomeCurso(String nome)

O cabeçalho define a assinatura do método.

(32)

Exemplo

public class Produto { private int codigo;

private String nome;

public String getNome() {

return nome; }

public void setNome(String nome_produto) {

nome = nome_produto; }

(33)

Orientação a Objetos em Java

– Classe em Java

class Bicicleta {

int velocidade = 0; int marcha = 1;

void mudarMarcha(int novoValor) { marcha = novoValor;

}

void aumentarVelocidade(int incremento) { velocidade = velocidade + incremento; }

void aplicarFreios(int decremento) {

velocidade = velocidade - decremento; }

(34)

Orientação a Objetos em Java

– Criando objetos com Java

• Criando dois objetos bicicleta:

Bicicleta bicicleta1 = new Bicicleta(); Bicicleta bicicleta2 = new Bicicleta();

• Invocando seus métodos:

bicicleta1.mudarMarcha(2);

(35)

Orientação a Objetos em Java

– Resumo

• A classe provê a estrutura para a construção de objetos.

• Um objeto é uma instância de uma classe. Ele contém um estado (valores de seus atributos) e expõe o seu comportamento através de métodos (funções).

• Ex. Bicicleta: ESTADO – valores dos atributos velocidade e marcha; COMPORTAMENTO – exposto pelos métodos mudarMarcha,

(36)

Método:

Sobrecarga

São métodos que tem o mesmo nome, mas com

argumentos diferentes.

http://www.devmedia.com.br/post-5124-Orientacao-a-objetos-parte-ll.html

Lista de Argumentos diferentes Podem alterar o tipo de retorno

(37)

Classe:

Construtores

Um construtor é uma estrutura especial da classe,

um método, que tem como objetivo definir a

configuração inicial de uma classe. É utilizado

quando existem atributos da classe que são

essenciais para o funcionamento do objeto, porém,

são atributos de instância, e, assim, variam de

acordo com cada objeto.

(38)

http://www.webartz.com.br/php/php-orientado-a-objetos-conceitos-Contrutores

• Utilizados para a construção de objetos

class Pessoa { String nome;

int idade;

public Pessoa (String nome, int idade) {

this.nome = nome; this.idade = idade; }

public Pessoa () {

this.nome = “João”;

this.idade = 25;

Pessoa maria =

new Pessoa(“Maria”, 20); Pessoa joao = new

(39)

Contrutores

• Devem ter o

mesmo nome da classe

que inicializam.

• Podem ter parâmetros.

• Não tem retorno.

• Se não é declarado nenhum construtor, a linguagem

provê um construtor padrão sem argumentos que não

faz nada

.

(40)

Contrutores

import java.util.*;

public class AloMundo {

private String mensagem = “ ”;

public AloMundo () {

Date data = new Date();

mensagem = "Alô, Mundo” + data.toString() ;

}

public void mostrarMensagem () { System.out.println( mensagem ); } Classe Pacotes Métodos Variáveis Construtores

(41)

Classe:

Destrutores

Semelhante aos construtores, o destrutor também é

uma estrutura, outro método, da classe, porém este é

responsável por limpar a memória ou atributos

utilizados na execução da classe.

http://www.webartz.com.br/php/php-orientado-a-objetos-conceitos-construtores-e-destrutores

(42)

Modificadores

de Acesso

(43)

Modificadores de Acesso

• Uma classe pode ser:

– public – acessado por qualquer outra classe.

– nenhum modificador (package-private) –

acessada

somente dentro do seu pacote

.

(44)

Modificadores de Acesso

• Atributos e métodos podem ser:

– public – acessados por qualquer outra classe.

– nenhum modificador (package-private) – acessados somente dentro do seu pacote

– private – acessados somente dentro de suas próprias classes. – protected – acessados somente dentro do seus pacotes e por

(45)

Modificadores de Acesso

Não

Não

Não

Sim

private

Não

Não

Sim

Sim

nenhum

Não

Sim

Sim

Sim

protected

Sim

Sim

Sim

Sim

public todos subclasse pacote

Classe/ Atributos ou métodos

modificador

(46)

ENCAPSULAMENTO

É o princípio pelo qual cada componente de um

programa deve agregar toda a informação relevante

para sua manipulação como uma unidade (uma

(47)

Orientação a Objetos em Java

– Resumo

• É um princípio fundamental da OO:

– Esconder o estado interno (valores dos atributos).

– Obrigar que interações com os atributos sejam executadas através de métodos.

• Com o encapsulamento um objeto determina a permissão

que outros objetos terão para acessar seus atributos

(48)

Orientação a Objetos em Java

– Encapsulamento dos Dados

Proteger os

atributos

Permitir acesso

aos atributos

através dos

métodos

(49)

Exemplo Encapsulamento

class Cliente {

private double credito; private String nome;

public String getNome() {

return nome; }

public void setNome(String nome_cliente) {

nome = nome_cliente; }

public void imprimaDadosCliente(Cliente c) {

imprimir(c.nome, c.credito); }

private void imprimir(String nome, double credito) {

System.out.println(“Cliente: “ + nome + “ Crédito: R$ “ + credito); }

(50)

Exemplo

class ProdutoSemEncapsulamento { public int codigo;

public String nome; public double preco;

public double desconto_a_vista;

(51)

Exemplo

public static void main(String[] args) {

ProdutoSemEncapsulamento p = new ProdutoSemEncapsulamento();

p.codigo = 1;

p.nome = "Samsung 17 polegadas"; p.preco = 500;

p.desconto_a_vista = 10;

System.out.println("Preço à prazo: " + p.preco); System.out.println("Preço à vista: " + (p.preco –

p.preco*p.desconto_a_vista/100)); }

(52)

Exemplo

(53)
(54)

Encapsulamento

Exercício

 Corrija a classe do exemplo anterior (vista abaixo). Esta classe deverá usar

encapsulamento, possuir um construtor, um método que calcula o preço a vista bem como um método setDesconto, que recebe o valor do desconto, e se o

mesmo for superior a 100 ou menor que zero, configurar o desconto como zero.

class ProdutoSemEncapsulamento {

public int codigo;

public String nome;

public double preco;

public double desconto_a_vista;

}

(55)

Solução

class Produto {

private int codigo; private String nome; private double preco;

private double desconto_a_vista;

public Produto(int cod_prod, String nome_prod, double preco_prod, double desc) { codigo = cod_prod; nome = nome_prod; preco = preco_prod; desconto_a_vista = desc; }

(56)

Solução

public double getPreco() { return preco;

}

public double getPrecoAVista() { double preco_a_vista;

preco_a_vista = preco - preco*desconto_a_vista/100; return preco_a_vista;

}

public void setDesconto(double desc) { if ((desc > 100) || (desc < 0)) desconto_a_vista = 0;

else

(57)

Exercício

Crie uma classe para representar uma conta bancária.

Esta classe deverá:

 Usar encapsulamento;

 Possuir dois atributos, código e saldo;

 Possuir um construtor que receba o número da conta e o saldo inicial. Se for passado um valor negativo para o saldo,utilizar zero como saldo inicial;

 Possuir métodos para creditar um valor, sacar um valor e imprimir o saldo.

 Se o valor a ser sacado for maior do que o saldo, sacar apenas o valor correspondente ao saldo (saldo será igual a zero),

(58)

Solução

class Conta {

private double saldo; private long numero;

public Conta(long num, double val) { numero = num;

if (val > 0) saldo = val; }

(59)

Solução

public double debitar(double val) { if (val > saldo)

val = saldo; saldo = saldo - val; return val;

}

public void imprimaSaldo() {

System.out.println(“Conta: “ + numero + “Saldo: R$ “ + saldo); }

(60)

INTERFACE

É um conjunto de métodos que um objeto deve

suportar, mas contendo apenas a especificação da

funcionalidade que uma classe deve conter, sem

determinar como essa funcionalidade deve ser

(61)

Interface

Lista de serviços oferecidos por um componente

Funciona como um “contrato” que o componente estabelece com

o mundo exterior que define exatamente como este pode fazer

uso do componente

(62)

Interface

Formada por métodos e atributos públicos.

Ausência de informações sobre como o trabalho é realizado.

Liberdade para modificar o funcionamento do componente sem

(63)

Interface da classe Cliente

public String getNome()

public void setNome(String nomeCliente)

public void imprimaDadosCliente(Cliente c)

Note que o método privado imprimir não faz parte da interface!

(64)

HERANÇA

Herança é um mecanismo que permite que

características comuns a diversas classes sejam

fatoradas em uma classe base, ou superclasse. A

(65)

Herança:

Sobreposição

A sobreposição refere-se à redefinição de métodos na

hierarquia da herança, de forma que estes métodos

implementam definições diferentes (mais

especializadas) nos subtipos.

http://arquiteturaemobilidade.blogspot.com/2008/07/conceitos-da-orientao-objetos-com-uml_08.html

(66)

Orientação a Objetos em Java

– Herança

Permite a uma classe herdar o estado (atributos) e o comportamento (métodos) de outra classe.

• Herança : entre diferentes classes podem existir diversas semelhanças, ou seja, duas ou mais classes poderão compartilhar os mesmos atributos e/ou os mesmos métodos

– Superclasse – Subclasse – Ancestral

(67)

Orientação a Objetos em Java

– Herança

Pessoa ---nome idade Professor ---formação área de interesse Aluno ---curso cr

(68)

Orientação a Objetos em Java

– Herança

(69)

Orientação a Objetos em Java

– Herança

(70)

Orientação a Objetos em Java

– Herança

(71)

Orientação a Objetos em Java

– Herança

João 25 Sistemas de Informação

Instâncias de

Aluno

Maria 20 Sistemas de Informação

(72)

Orientação a Objetos em Java

– Herança

// SuperClass.java

public class SuperClass {

// Atributos e métodos }

// SubClass.java

public class SubClass EXTENDS SuperClass {

// Atributos e métodos }

(73)

Orientação a Objetos em Java

– Herança

class Pessoa { String nome; int idade;

void definirNome(String valor) { nome = valor;

}

String retornarNome() { return nome;

}

void definirIdade(int valor) { idade = valor;

}

int retornarIdade() { return idade;

class Aluno extends Pessoa { String curso;

void definirCurso(String valor) { curso = valor; } String retornarCurso() { return curso; } }

(74)

Orientação a Objetos em Java – Herança

(27/33)

Aluno joao = new Aluno(); joao.definirNome(“João”); joao.definirIdade(25);

joao.definirCurso(“Sistemas de Informação”);

Aluno maria = new Aluno(); maria.definirNome(“Maria”); maria.definirIdade(20); maria.definirCurso(“Sistemas de Informação”); João 25 Sistemas de Informação Maria 20 Sistemas de Informação

(75)

Orientação a Objetos em Java

– Herança

ELETRODOMÉSTICO Voltagem Garantia Ligar Desligar Liquidificador Fabricante Cor Auto Limpeza Velocidade

(76)

Exercícios

(1)

• Exercício1: Escreva um programa que implemente as

(77)

Exercícios

(2)

• Exercício2: Implemente uma interface Comparável que

deve ser implementada pelas classes definidas

(78)

Exercícios

(3)

• Exercício3: Implemente um as classes Frota e

TerrenoIrregular conforme explicitado no diagrama UML

abaixo;

(79)

Exercícios

(4)

• Exercício4: Implemente uma classe Ordenador com um

método ordenar capaz de efetuar a ordenação, pelo

(80)

Exercícios

(5)

• Exercício5: Implemente uma classe TerrenoReticulado

que herda de Terreno e tem como característica o fato de

suas cotas estarem dispostas regularmente na forma de

uma matriz m x n.

(81)

POLIMORFISMO

O polimorfismo permite que referências de tipos de

classes mais abstratas representem o

comportamento das classes concretas que

referenciam. Assim, um mesmo método pode

apresentar várias formas, de acordo com o seu

contexto.

(82)

Orientação a Objetos em Java

– Polimorfismo

• Em O.O., polimorfismo é o conceito que descreve a capacidade de um tipo A ser usado como um tipo B.

• O objetivo do polimorfismo é implementar um estilo de programação

baseado em passagem de mensagens no qual objetos de diferentes tipos definem uma mesma interface de operações.

• Em linguagens fortemente tipadas o polimorfismo é implementado através de herança ou implementação de interfaces.

(83)

Orientação a Objetos em Java

– Polimorfismo

A1

A2

A1

A2

Classe B

Obj.

A

Obj.

B

Classe A

(84)

Orientação a Objetos em Java

– Ligação dinâmica

• O mecanismo de ligação dinâmica possibilita o uso do polimorfismo; • Para entendermos melhor como funciona a atuação da ligação

dinâmica no polimorfismo voltemos ao exemplo anterior

A1

A2

A1 chama A2

A1

Classe B

Obj.

A

sequência de

Qual é a

métodos

executados?

(85)

Referências

Documentos relacionados

Na arrematação eletrônica, após o lance aceito pelo Leiloeiro Oficial, o arrematante será notificado por e-mail para no prazo de 24 (vinte e quatro) horas

Além do envolvimento efetivo com muitas organizações, entidades comunitárias e instituições, o volume de recursos alcançados em editais, até o momento (dezembro de 2012, em

O Conselho Administrativo de Defesa Econômica (CADE), passa a ser então, o órgão propulsor desta batalha jurídica, com poderes devidamente constituídos para o

Em geral, baseia-se em um Caso de Uso definido pelo diagrama de mesmo nome e apóia-se no Diagrama de Classes para determinar os objetos das classes envolvidas em um processo, bem

[r]

class Pessoa { protected: string nome; Data dataNasc; public: Pessoa(string, Data); string getNome() const; Data getDataNasc()const; int getIdade() const; void setNome(string);

COLOCAÇÃO MATRÍCULA NOME COMPLETO NASC... COLOCAÇÃO MATRÍCULA NOME

Nécessaire Térmica + Relógio COMPROU Colgate, ganhou carinho de compra 60L COMPROU Risqué, ganhou Display de