Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com...

Post on 31-Mar-2018

218 views 2 download

Transcript of Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com...

Introdução à orientação a

objetos

João Tito Almeida Vianna

25/05/2013

Roteiro – Aula 2

Motivação

Revisão dos conceitos da aula 1

Preparação para os exercícios

Exercícios propostos

2

Motivação

A orientação a objetos pode facilitar muito a

tarefa do programador:

◦ Criação de interfaces:

3

Motivação

A orientação a objetos pode facilitar muito a

tarefa do programador:

◦ Plotagem de gráficos:

4

Motivação

A orientação a objetos pode facilitar muito a

tarefa do programador:

◦ Comunicação serial com circuito externo:

5

Motivação

A orientação a objetos pode facilitar muito a tarefa do programador:

◦ Criação de interfaces;

◦ Plotagem de gráficos;

◦ Comunicação serial com circuito externo.

Em java, o download de uma biblioteca e o estudo das funções disponíveis na mesma podem tornar todas essas bem mais simples, quando comparadas com a programação estruturada.

6

Revisão –

Orient. a objetos x Prog.Estruturada

Orientação a

objetos

Programação

Estruturada

Enfoque Objetos Ações

Unidade básica Classe Função

7

Revisão –

Orientação a Objetos

Classe:

◦ estrutura de dados que contém tanto campos de

dados (variáveis próprias) como seus próprios

métodos (funções).

Objeto:

◦ É uma instância de classe.

8

Classe: define a estrutura.

Objeto: instância.

Revisão –

Orientação a Objetos

9

Programação estruturada Orientação a objetos

int x; Conta contaCorrente;

Tipo da variável

Nome da Variável

Nome da classe

Nome do objeto

Orientação a Objetos –

Classe

Atributos = variáveis.

Métodos = funções.

Programação Estruturada Orientação a objetos

Struct Classe

• Variáveis • Atributos

• Métodos

• Construtor

10

Orientação a Objetos –

Construtor

Método que deve ser chamado antes de qualquer outro.

Em java, o construtor é responsável pela alocação de memória de todos os atributos da classe.

O construtor tem obrigatoriamente o mesmo nome da classe.

É possível programar mais de um construtor, devendo os diferentes construtores receberem parâmetros diferentes.

Aluno var1= new Aluno();

11

* Declaração de objeto da classe “Aluno”, com chamada de construtor em Java.

Orientação a Objetos –

Classe Em java:

public class Aluno

{

private String nome;

private int numeroDeMatricula;

private int[] dataDeNascimento = new int[3];

private String curso;

public Aluno(String N, int Mat, int[] Nasc, String cur)

{

nome = N;

numeroDeMatricula = Mat;

dataDeNascimento = Nasc;

curso = cur;

}

. . .

Atributos

Construtor

de classe

12

* Mesmo nome

da classe

Orientação a Objetos –

Classe

public void setNumeroMatricula(int novo)

{

numeroDeMatricula = novo

}

public void setCurso(String cur)

{

curso = cur;

}

public String getNome()

{

return nome;

}

}

Métodos da

classe

13

Orientação a Objetos –

Encapsulamento

Proteção dos atributos da classe, tornando-os

acessíveis somente através de suas próprias

funções.

14

Orientação a Objetos –

Encapsulamento

Especificadores de acesso a membro:

◦ public: membro pode ser acessado de

qualquer parte do programa.

◦ private: membro só é acessível através dos

métodos da classe.

◦ protected: membro acessível à classe e às

suas subclasses.

15

Orientação a Objetos –

Encapsulamento

“[Através do encapsulamento] o objeto é

disponibilizado ao usuário com toda a sua

funcionalidade, sem a necessidade de

conhecermos seu funcionamento ou

armazenamento interno.” http://www.devmedia.com.br

16

Orientação a Objetos –

Encapsulamento

Procedimento “básico”:

◦ Atributos todos private.

◦ Criação da função “getAtributo()” tipo public,

a qual devolve o valor do atributo.

◦ Criação da função “setAtributo(input)” do

tipo public, a qual altera o valor do atributo.

17

Orientação a Objetos –

Encapsulamento Em java:

public class Aluno

{

private String nome;

private int numeroDeMatricula;

private int[] dataDeNascimento = new int[3];

private String curso;

public Aluno(String N, int Mat, int[] Nasc, String cur)

{

nome = N;

numeroDeMatricula = Mat;

dataDeNascimento = Nasc;

curso = cur;

}

. . .

Atributos

Construtor

de classe

18

privados

public

(sempre)

public void setNumeroMatricula(int novo)

{

numeroDeMatricula = novo

}

public String getNome()

{

return nome;

}

public int getNumeroDeMatricula()

{

return numeroDeMatricula;

}

}

Orientação a Objetos –

Encapsulamento

19

* Um “setVariavel” para cada

variável “editável” (definido do

programador).

* Um “getVariavel” para

CADA variável.

Orientação a Objetos –

Herança

Herança: Definição de uma classe como extensão da

outra.

o Melhor aproveitamento do código.

o Evita duplicação.

o Facilita manutenção.

• A subclasse herda todos os métodos e atributos da

superclasse e pode definir seus próprios.

20

Orientação a Objetos –

Herança Classe base

ou

Superclasse

Subclasse

21

Preparação para exercícios

Declaração de classe:

public class Conta

{

// PROGRAMAÇÃO AQUI

}

Declaração de variável

private int numeroDaConta;

22

Especificador

de acesso

Nome da classe

Nome da variável

Tipo da variável

Preparação para exercícios

Declaração de método:

public int setSaldo (int input1 , double input2)

{

//Código aqui

return numero;

}

23

Especificador de

acesso

Nome do método

Tipo de variável

retornada pelo método

Argumentos recebidos

pelo método

Tipo do argumento

Nomes dos argumentos

Como declarado, o método deve

retornar uma variável do tipo “int”

Preparação para exercícios Tipo de variáveis:

◦ int

◦ double

◦ boolean

◦ String

◦ char

Tipo de variável retornada por método:

◦ Tipos citados acima;

◦ void (para o caso em que não há nada a retornar)

Especificadores de acesso:

◦ public

◦ private

◦ protected

Comando de impressão:

◦ System.out.println(“Hello world!”);

Declaração de subclasse

◦ public class contaCorrente extends conta { //Código aqui }

24

Criando um projeto no Netbeans

“Arquivo”

“Novo projeto...”

Selecionar: “Java”; “Aplicação Java” (já selecionado por

padrão)

“Próximo”

Dar nome ao projeto

“Finalizar”

25

Criando um projeto no Netbeans

26

Projeto criado

“Teste”

Criando um projeto no Netbeans

27

Função principal de um programa Java.

SEMPRE tem a forma:

public static void main()

(Como o “main” da linguagem C)

Criando uma classe no Netbeans

“Arquivo”

“Novo Arquivo...”

Selecionar: “Java”; “Classe Java” (já selecionado por

padrão)

“Próximo”

Dar nome à classe

“Finalizar”

28

Exercício

Criar uma classe “conta” ◦ Atributos: Número da conta

Nome do dono da conta

Saldo

Limite

◦ Métodos: Encapsulamento de variáveis

Extrato

Saque

Depósito

Imprime o nome do dono

Transferência entre contas

29

Exercício

Declarar 3 contas com os seguintes dados:

Criar um construtor para a classe;

Fazer um depósito de 1000,00 na conta de Maria;

Transferir 1500,59 da conta de João para a de José;

Sacar 5000,00 da conta de José;

Sacar -200,00 da conta de Maria.

30

Número Cliente Saldo Limite

76521 João 50520,00 1000,00

98213 José 2500,00 300,00

32466 Maria 530,00 200,00

Exercício

Criar uma classe “cliente” que contenha ao atributos (fazendo as adequações necessárias)

◦ Nome

◦ Sobrenome

◦ CPF

Substituí-la no lugar do atributo “nomeDoCliente”, criado na classe “Conta”.

31

Exercício

Crie o atributo “taxa” na classe “conta” e o método “aplicaTaxa”.

Crie as subclasses de “conta”: “contaCorrente” e “contaPoupança”

◦ Em “contaPoupança” o método “aplicaTaxa” deve aplicar um rendimento 3 vezes maior;

◦ Em “contaCorrente” o método “aplicaTaxa” deve aplicar um rendimento 2 vezes maior;

◦ Em “contaCorrente” deve-se cobrar 0,10 por saque.

32

Referências

[1] Reis, G. R., Material do minicurso: "C++ e Programação Orientada a Objetos", ministrado na XXXIII Semana da Engenharia, 2010.

[2] Bohm, Corrado; and Giuseppe Jacopini (May 1966). "Flow Diagrams, Turing Machines and Languages with Only Two Formation Rules". Communications of the ACM 9 (5): 366–371.

[3] Dijkstra, E. "Go-to statement considered harmful", em Commun. ACM 11 (1968), 3: 147–148. (http://www.cs.utexas.edu/~EWD/ewd02xx/EWD215.PDF)

33