linguagem de programação programação orientada a...

41
Linguagem de programação Programação Orientada a objetos Professor: Saulo Henrique Cabral Silva Instituto Federal de Minas Gerais Campus Ponte Nova

Upload: dangtruc

Post on 18-Oct-2018

268 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Linguagem de programaçãoProgramação Orientada a objetos

Professor: Saulo Henrique Cabral Silva

Instituto Federal de Minas GeraisCampus Ponte Nova

Page 2: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Paradigma da orientação a objetos

• Paradigma = forma de abordar um problema.– Paradigma orientado a objetos ???

• O paradigma de orientação a objetos foi formulado já háalguns bons anos atrás.– “analogia biológica”

– Sistema deve funcionar como

um ser vivo.

2

Page 3: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Paradigma da orientação a objetos (5 mandamentos)

• Qualquer coisa é um objeto.

• Objetos realizam tarefas através da requisição de serviços aoutros objetos para realizar uma determinada tarefa.

• Cada objeto pertence a uma determinada classe. Uma classe agrupa objetos similares.

• A classe é um repositório para

comportamento associado ao objeto.

• Classes são organizadas em hierarquias.

3

Page 4: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Resumindo o que vamos aprender...

4

Page 5: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

CLASSES

5

Page 6: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Classes e objetos

• O mundo real é formado de coisas (pessoa, quadro, computador,fornecedor, animal ...).– Toda coisa do mundo real é chamada de objeto na modelagem orientada

a objetos.

• Nos seres humanos ainda costumamos agrupar os objetos.– Esse processo de agrupar “coisas” reduz a complexidade de interpretar e

abstrair tantas opções que existem atualmente.– Ex: é muito mais fácil se lembrar o que é um cavalo (ideia/molde).

• Uma classe é a ideia geral (é o molde). A classe:– Contem a descrição dos atributos e serviços(ações)

comuns a um grupo de objetos.– Dizemos que um objeto é uma instancia de uma classe.

6

Page 7: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Contextualizando

• Vem a mente um objeto (animal):– 4 patas

– Crina

– Cauda

– ...

• É importante sempre lembrar que uma

classe é uma representação abstrata de

coisas do mundo real.– Coisas do mundo real são muito complexas para que todas as suas

características sejam representadas em uma classe.

– Para cada problema posso ter atributos mais ou menos relevantes...

7

Page 8: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Declarando uma Classe em Java

public class Cavalo {//atributos

//construtores

//encapsulamento

//comportamento}

8

Page 9: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

ATRIBUTOS

9

Page 10: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Atributos

• Cor

• Altura

• Peso

• Número de dentes

• Quantidade de patas

10

Page 11: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Atributos de uma Classe em Java

public class Cavalo {//atributos

//construtores

//encapsulamento

//comportamento}

11

Page 12: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Atributos de uma Classe em Java

public class Cavalo {

private String cor;private int idade;private double peso;private int numPatas;private String raca;

//construtores

//encapsulamento

//comportamento}

12

Page 13: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

CONSTRUTORES

13

Page 14: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Construtores

• São os responsáveis por duas funções essenciais dentro daprogramação orientada a objetos:– Constroem (instanciam) os objetos, que são instâncias das classes.

– Inicializam todos os atributos.

• Temos aqui um cuidado especial com atributos que também possam ter anecessidade de serem inicializados através de outro construtor...

• Construtores que veremos frequentemente de

agora em diante...– default

– Variáveis

14

Page 15: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Construtores código

public class Cavalo {private String cor;private int idade;private double peso;private String numPatas;private String raca;

public Cavalo() { }

public Cavalo( String cor_, int idade_ ) {this.cor = cor_;this.idade = idade_;

}}

15

h

Peso

Page 16: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Objetos

• “Um objeto é a instância de uma classe”.

• Um objeto possui um espaço de memória...

• A classe é a fôrma e o objeto é o produto dessa fôrma.

• Como criar um objeto ? Chame os construtores.

16

Classe Objeto

Page 17: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Criação de objetos

public static void main (String [] args) {

Cavalo c1 = new Cavalo();

Cavalo c2 = new Cavalo(“preto”,12);

Cavalo c3 = new Cavalo(“Cinza”,9);

}

17

Page 18: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Métodos

18

Page 19: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

19

Page 20: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Análise do estudo de caso... (Métodos/ações)

• Os pedais ocultam as complexidades do funcionamento domotorista:– O pedal do acelerador oculta toda a complexidade

para aumentar a velocidade do carro.

– O pedal do freio oculta a complexidade para

diminuir a velocidade do carro.

– O volante oculta a complexidade dos mecanismos

para mudar a direção do carro.

20

Page 21: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Encapsulamento

• O objetivo aqui é isolar a classe, e controlar acessos à mesma.– Boa prática de programação em deixar os atributos de uma classe restritos a

ela.

– Dizemos que ocultamos os tributos da classe.

– Para acessar os atributos de uma classe utiliza-se os métodos get e set.

21

var1

var2

var3

Get’sSet’s

Classe

Page 22: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Métodos Set’s – Get’s

public class Cavalo {

private String cor;

private int idade;

public void setCor (String cor_){

this.cor = cor_;

}

public String getCor ( ){

return this.cor;

}

public void setIdade ( int idade_){

this.idade = idade_;

}

}

Page 23: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Métodos específicos / habilidades

• São métodos que denotam um comportamento/habilidade de cadaClasse.

• A implementação destes métodos segue a mesma sintaxe especificada naaula referente a métodos.

• Métodos de classe possuem acesso aos atributos das

mesmas.– Acesso

– Modificação de valor

23

Page 24: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Codificando métodos de classes

public class Cavalo {

//... variáveis

//... construtores

public void correr( ){

// ...

// faça algo...

// ...

}

}

24

Page 25: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

“Chamando - usando” as habilidades de cada Objeto

public static void main (String [] args) {

Cavalo c1 = new Cavalo();

Cavalo c2 = new Cavalo(“preto”,12);

Cavalo c3 = new Cavalo(“Cinza”,9);

c1.correr();

c2.correr();

}

25

Page 26: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Comecemos com um estudo de caso...

• Implemente um sistema para um supermercado no qual:

– Você vai receber do cliente um arquivo em que o mesmo contêm aespecificação com o código, nome e preço de todos os produtos que sãoofertados pelo supermercado.

– O programa deve receber todos os produtos que o usuário comprou.

– Deve realizar a soma dessa compra.

– A lista de produtos comprados pelo cliente deve ser apresentada logo após osomatório do preço de todos os produtos .

– A opção de remover um item ou acrescentar

um novo a lista deve estar disponível .

– Após passar todos os valores, o sistema deve

calcular o troco, com base no valor

que o cliente repassou para o caixa.

26

Page 27: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

HERANÇA

27

Page 28: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Herança

• Herança é uma forma de reutilização de software em que uma novaclasse é criada absorvendo membros de uma classe.

• Estamos em busca do aprimoramento, novas capacidades oumodificadas.

• Com isso ganhamos:– Tempo;

– E reuso de código testado;

• Ao criar uma classe, em vez de declarar

membros completamente novos, podemos

herdar membros de uma classe já existente.

28

Page 29: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Herança - código

public class Animal {

private String nome;

private double altura;

public Animal ( ){ }

public Animal (String nome_, double altura_){

this.nome = nome_;

this.altura = altura_;

}

}29

Page 30: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Herança - código

public class Cavalo extends Animal{private String cor;private int idade;private double peso;private String numPatas;private String raca;public Cavalo() {

super( );}

public Cavalo(String cor_, int idade_,String nome_,String alt_ ) {super( nome_, alt_);this.cor = cor_;this.idade = idade_;...

}} 30

Page 31: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

POLIMORFISMO

31

Page 32: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Polimorfismo

• O polimorfismo permite escrever programas que processam objetos quecompartilham uma mesma classe.

• Com o polimorfismo podemos projetar e implementar sistemas que sãofacilmente extensíveis.– Novas classes podem ser adicionadas com pouca ou nenhuma modificação.

– As únicas partes de um programa que devem ser alteradas para acomodar as novasclasses são aquelas que exigem conhecimento direto das mesmas que acabaram de seradicionadas a hierarquia.

321 m 3 m 10 m

Page 33: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Polimorfismo - código

• Implementamos o método mover na super classe Animal.

• Sobrescrevemos esse método (mover) em cada uma das subclasses(especializações).

• O ato de: “sobrescrever” é o polimorfismo.

Vector <Animal> animais = new Vector <Animal> ( );

//adição de alguns animais nesse vetor dinâmico (subclasses)

for ( int i = 0 ; i < animais.size(); i++ ){

animais.get(i).correr();

} 33

Page 34: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

CLASSES ENUMERATES (ENUM)

34

Page 35: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Classes Enumerates

• É um tipo especial de classe que é introduzida pela palavra-chave ENUM.

• Essa classe especial, contém uma lista de constantes de enumeraçãoseparadas por vírgula.– Cada identificador em uma classe ENUM deve ser único.

• As instâncias (“Objetos”) dos tipos enum são criadas e nomeadas juntocom a declaração da classe, sendo fixas e imutáveis

• Não é permitido criar novas instâncias com a palavra new.

– Construtor private

• As instâncias são declaradas todas com letras MAISCULAS;

35

Page 36: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Exemplo Classes Enumeratespublic enum DiaSemana {

DOMINGO(0), SEGUNDA(1), TERCA(2),

QUARTA(3), QUINTA(4), SEXTA(5), SABADO(6);

private valorDia;

private DiaSemana( int valor) {

this.valorDia = valor;

}

public void getValorDia() {

return this.valorDia;

}

} 36

Page 37: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

CLASSES ABSTRATAS

37

Page 38: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Classes abstratas (interfaces)

• Fornecer uma superclasse apropriada a partir da qual outrasclasses podem herdar e assim podem compartilhar umdesign comum.

• Uma classe abstrata não pode produzir instâncias de objetos.– Classes concretas (não abstratas) podem.

• Uma classe abstrata é como

o design de alguma construção...– O que essa construção precisa

contemplar...

38

Page 39: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Classes abstratas - código

public abstract class Tv {

public abstract void aumentarVolume ( );

public abstract void abaixarVolume ( );

public abstract String retornaFabricante ( ){

...

}

}

public class TvPanasonic extends Tv {

//obrigatório implementar todos os métodos abstratos da classe abstrata

}39

Page 40: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito

Interfaces - código

public interface Tv {

public void aumentarVolume ( );

public void abaixarVolume ( );

public String retornaFabricante ( );

}

public class TvPanasonic implements Tv {

//obrigatório implementar todos os métodos da interface

}

40

Page 41: Linguagem de programação Programação Orientada a objetossauloifmg.com.br/Disciplinas/L1/AulaPoo.pdf · Linguagem de programação Programação Orientada a objetos ... émuito