0% acharam este documento útil (0 voto)
56 visualizações43 páginas

Aula 03 e 04 - Introducao - OO - Java

Enviado por

bbrunomello1
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
56 visualizações43 páginas

Aula 03 e 04 - Introducao - OO - Java

Enviado por

bbrunomello1
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 43

Introdução a Classes e Objetos

Vinicius Ramos
Visão Geral
 Classes;
 Objetos;
 Métodos;
 Sem parâmetros;
 Com parâmetros;
 Get e Set;
 Construtores;
 Variáveis de Instância;
 Tipos por referência.
Analogia - Carro
 Como fazemos para dirigir um carro?
 Você sabe o que o motor faz quando você pisa no
acelerador?
 E o pedal de freio?
 Um carro começa pelo desenho dos engenheiros…
 Este desenho inclui os pedais do acelerador e do freio;
 Os pedais “ocultam” os mecanismos complexos para
fazer o carro aumentar ou diminuir a velocidade;
 E o volante? Você sabe como funciona
internamente?
Analogia - Carro
 Tudo isto permite que você dirija um carro sem
conhecer o mecanismo de como os motores
funcionam.

Retirado de: http://www.colorirgratis.com/desenho-de-carro-antigo-convers%C3%ADvel_10193.html


Analogia – Carro - Métodos
 Para realizarmos tarefas em um programa OO,
precisamos de métodos;
 O método descreve o mecanismo que realmente
realiza a tarefa;

Retirado de: http://www.portalsaofrancisco.com.br/alfa/freio-a-disco/freio-a-disco-8.php


Analogia – Carro - Métodos
 O método oculta do seu usuário todas os passos
complexos (ou não) para a realização de
determinada tarefa;
 Assim como o pedal do freio oculta o mecanismo
que faz com que o carro diminua a velocidade.

Retirado de: http://autoentusiastas.blogspot.com.br/2012/05/quando-o-pedal-de-freio-baixa.html


Analogia – Carro – Classe
 Em Java, uma unidade de programa é chamada de
Classe;
 Esta unidade (classe) contem um ou mais métodos
que realizam tarefas específicas para aquela classe;
 No nosso exemplo, a classe carro seria o desenho
da engenharia do carro com as orientações dos
pedais e como utilizá-los;
Analogia – Carro – Objeto
 Assim como você não pode dirigir um desenho, você
também não pode “dirigir” uma classe;
 Para dirigirmos um carro nós precisamos primeiro
criar este carro;
 Em Java, para “dirigirmos” uma classe, precisamos
primeiro criar um objeto desta classe para
podermos realizar as tarefas relacionadas àquela
classe.

Retirado de: http://imagensgratis.p.ht/2013/06/carros-da-ford-2013-fotos-da-internet/


Analogia – Carro - Mensagens
 Ao pisarmos no freio de um carro, o pedal envia
uma mensagem para o carro realizar uma tarefa;
 Da mesma maneira, enviamos mensagens a
objetos para realizarmos uma tarefa;
 O envio de mensagens é uma chamada a um
método.
Objeto
Objeto

Objeto
Objeto
Objeto
Analogia – Carro – Atributos
 Todo carro tem vários atributos, como cor, marca,
quantidade de gasolina no tanque, número de
portas…
 Estes atributos fazem parte da definição do carro e
está representado no projeto do carro, assim como
na OO estes atributos são representados na Classe;
 O importante é que todo carro criado (objeto) tem os
seus próprios valores para atributos;
 Desta forma, os objetos possuem os próprios
valores para os atributos.
Variáveis de Instância
 Os atributos de um objeto são conhecidos como
variáveis de instância;
 Lembram-se do nosso exemplo da aula passada?
Os atributos nome, cor e raca são exemplos de variáveis
de instância do objeto cachorro.
Cachorro scooby = new Cachorro();

nome: Scooby-Doo;
cor: marron;
raça: dinamarquês;
Exemplos práticos
 Declarar uma classe com um método.
public class GradeBook {

// Exibe uma mensagem de boas-vindas ao usuario


public void displayMessage() {
System.out.println("Welcome to the Grade Book!");
} //fim do método displayMessage

} //fim da classe GradeBook

 As palavras public, class e void são palavras reservadas


na linguagem Java;
 public: modificador de acesso;
 void: tipo de retorno.
Exemplos práticos
 Vamos tentar executar a classe GradeBook!
 O que houve?
 Error: Main method not found in class GradeBook, please
define the main method as: public static void main(
String[] args)
 Para executarmos um programa, precisaremos de
pelo menos uma classe com o método principal
main.
Exemplos Práticos
 Instanciar um objeto de uma classe.
public class GradeBookTest {

public static void main(String[] args){


//Cria um objeto GradeBook e o atribui a myGradeBook
GradeBook myGradeBook = new GradeBook();

//Chama o método displayMessage de myGradeBook


myGradeBook.displayMessage();
} //fim de main
} //fim da classe GradeBookTest
 Em geral você não pode chamar um método de outra
classe sem instanciá-la;
 Para chamarmos um método, usamos o nome do objeto
e o nome do método separados por um “.”.
Exemplos Práticos
 Agora vamos compilar novamente as classes e
chamar a nossa classe GradeBookTest;
 Para compilar diversas classes ao mesmo tempo, use o
comando
javac *.java
 O que aconteceu?
 No diagrama UML esta classe é representada como:
GradeBook

+ displayMessage( )
Declarando Métodos com Parâmetros
 Retomando a nossa analogia, quando pressionamos
o acelerador de um carro ele envia uma mensagem
ao motor para fazer o carro andar mais rápido;
 Mas quanto?
 Se você pressionar o pedal mais forte, mais rápido o
carro anda;
 Portanto, precisamos de mais informações para
executarmos a tarefa de acelerar;
 Essas informações adicionais em Java são
chamadas de parâmetros.
Métodos e Parâmetros
 Um método pode exigir mais de um parâmetro;
 Chamamos de lista de parâmetros;
 A lista de parâmetros deve aparecer entre os
caracteres “(” e “)” da declaração do método (mais
conhecido como cabeçalho);
 O método displayMessage da classe GradeBook
não exige parâmetros. Verificamos que os
parênteses estão vazios.
public void displayMessage( ) { … }
Exemplos Práticos
 Vamos criar uma nova classe GradeBook com um
método displayMessage capaz de exibir o nome do
curso como parte da mensagem de boas-vindas;
 O nome do curso deve ser recebido como parâmetro pelo
método displayMessage.
public class GradeBook2 {

// Exibe uma mensagem de boas-vindas ao usuario


public void displayMessage(String courseName) {
System.out.printf("Welcome to the Grade Book for \n%s!",
courseName);
} //fim do método displayMessage

} //fim da classe GradeBook2


Exemplos Práticos
 Como comentamos, o método displayMessage
agora exige um parâmetro;
 Portanto, a classe GradeBookTest não poderá
chamar este método novo.
//Cria um objeto GradeBook e o atribui a myGradeBook
GradeBook2 myGradeBook2 = new GradeBook2();

//Chama o método displayMessage de myGradeBook


myGradeBook2.displayMessage();
 Ao tentarmos compilar a classe GradeBookTest com
essas novas linhas, recebemos um erro.
Exemplos Práticos – Erros Comuns
 Ocorrerá um erro de compilação se o número de
argumentos em uma chamada de método não
corresponder ao número de parâmetros na
declaração do método;
 Ocorrerá um erro de compilação se o tipo de
qualquer argumento em uma chamada de método
não for consistente com o tipo do parâmetro
correspondente na declaração do método.
Exemplos Práticos
 Vamos criar uma nova classe de teste.
public class GradeBookTest2 {

public static void main(String[] args){


//Cria um objeto GradeBook e o atribui a myGradeBook
GradeBook2 myGradeBook2 = new GradeBook2();

//Chama o método displayMessage com um parametro


myGradeBook2.displayMessage("Java Programming Language");
} //fim de main

} //fim da classe GradeBookTest


Exemplos Práticos
 O diagrama de classe UML atualizado para a classe
GradeBook2.

GradeBook2

+ displayMessage( courseName: String )


Exercícios
1. Altere a classe GradeBookTest2 para permitir que
o usuário digite o nome do curso e o programa
apresente este nome no console.
2. Crie uma classe Calculadora com dois métodos
distintos chamados somar e subtrair. Os métodos
devem exigir dois números inteiros e apresentar a
sua soma e subtração em cada um dos métodos,
respectivamente. Não se esqueça de testar os
métodos através de uma classe de teste onde o
usuário poderá digitar dois números para serem
somados e subtraídos.
Variáveis de instância, métodos set e get
 Até agora só criamos variáveis no método main de
um aplicativo;
 Estas variáveis são chamadas de variáveis locais;
 Quando criamos um objeto (usando a palavra
reservada new), os atributos deste objeto são
carregados com o objeto e existem antes de um
método ser chamado e depois de o método
completar a sua execução;
 Geralmente uma classe possui um ou mais métodos
capazes de manipular os atributos pertencentes a
um objeto particular da classe.
Variáveis de instância, métodos set e get
 Quando criamos uma classe, os atributos são
representados como variáveis nesta classe;
 Estas variáveis são chamadas de campos;
 Os campos existem fora da declaração dos
métodos;
 Quando cada objeto de uma classe mantem a sua
própria cópia de um atributo, o campo também é
conhecido como variável de instância;
 Cada objeto tem uma instância da variável em memória.
Variáveis de instância, métodos set e get
 Vamos criar uma classe (GradeBook3.java) que
possua uma variável de instância e três métodos:
displayMessage(), setCourseName(String) e
getCourseName();

public class GradeBook3 {

//Variavel de instancia que guarda o nome do curso


private String courseName;

//Metodo para configurar o nome do curso


public void setCourseName(String name) {
courseName = name; //armazena o nome do curso
} //fim do metodo setCourseName
Variáveis de instância, métodos set e get

//metodo para recuperar o nome do curso


public String getCourseName() {
return courseName;
} //fim do metodo getCourseName

// Exibe uma mensagem de boas-vindas


// ao usuario com o nome do curso
public void displayMessage() {
System.out.printf("Welcome to the Grade Book
for \n%s!\n", getCourseName());
}//fim do método displayMessage

} //fim da classe GradeBook


Variáveis de instância, métodos set e get
 Os métodos get e set são métodos especiais e
seguem o padrão:
 Palavra get ou set seguido do nome da variável de
instância;
 A variável de instância courseName tem o seu tipo e
uma palavra especial: private;
 Chamada de modificador de acesso;
 public também é um modificador de acesso;
 Usado para ocultar os dados de uma classe;
 Só quem tem acesso às variáveis de instância private
são os métodos da classe;
 Este mecanismo é conhecido como Encapsulamento.
Variáveis de instância, métodos set e get
 O método setCourseName(String) não retorna
qualquer dado ao terminar a sua tarefa. Portanto, o
seu tipo de retorno é void;
 O método recebe um parâmetro – name – que
representa o nome do curso que será passado para
o método como argumento;
 O parâmetro name é atribuído à variável de
instância courseName;
 Argumentos (sempre entre parênteses):
TIPO nome_do_argumento [, TIPO2 nome2…, TIPO3 nome3];
Os TIPOS podem variar ou não;
Intrução return
 A instrução return “envia” um determinado valor para
o método que o chamou;
 No nosso exemplo o valor enviado é o valor da variável
de instância courseName;
 return é uma palavra reservada da linguagem Java.
Exemplos Práticos
 Vamos criar a classe de teste para instanciarmos a
nova classe GradeBook3.

import java.util.Scanner; //importacao da classe Scanner

public class GradeBookTest3 {

public static void main(String[] args){

//cria um Scanner para obter entrada da janela de comando


Scanner input = new Scanner( System.in );

//Cria um objeto GradeBook e o atribui a myGradeBook


GradeBook3 myGradeBook3 = new GradeBook3();
Exemplos Práticos

System.out.printf("Initial course name is: %s\n\n",


myGradeBook3.getCourseName());

System.out.println("Entre com o nome do curso: ");


String theName = input.nextLine();
myGradeBook3.setCourseName( theName ); //configura o nome do curso
System.out.println(); //linha em branco

//Mensagem de boas-vindas depois de especificar o nome do curso


myGradeBook3.displayMessage();
} //fim de main

} //fim da classe GradeBookTest


Exemplos Práticos
 O diagrama de classe UML atualizado para a classe
GradeBook3.

GradeBook3

- courseName : String

+ setCourseName( name: String )


+ getCourseName( ) : String
+ displayMessage( )
Exercícios
1. Vamos modificar a nossa classe GradeBook3:
a) Inclua uma variável de instância String que representa
o nome do professor do curso;
b) Forneça um método set para alterar o nome do
professor e um método get para recuperá-lo;
c) Modifique o método displayMessage para gerar a saída
da mensagem de boas-vindas e o nome do curso,
seguido de “Este curso é ministrado por: “ e o nome do
professor.
d) Utilize a sua classe modificada em uma classe de teste
que demonstre as novas capacidades da classe.
Exercícios
2. Crie uma classe chamada Employee que inclua
três variáveis de instância: um primeiro nome (tipo
String), um sobrenome (tipo String) e um salário
mensal (tipo double). Forneça métodos get e set
para as variáveis de instância. Se o salário mensal
informado não for positivo, não atribua o seu valor.
Escreve um aplicativo de teste chamado
EmployeeTest que demonstra as capacidades da
classe Employee. Crie dois objetos Employee e
exiba o salário anual de cada objeto. Então dê um
aumento de 10% a cada objeto employee e exiba
novamente o salario anual dos employees.
Construtores
 Como vimos no exemplo anterior, ao criarmos um
novo objeto da classe GradeBook3, a variável de
instância courseName é criada com o valor null;
 E se quisermos fornecer um nome do curso ao
criarmos um novo objeto GradeBook3?
 É neste ponto que entram os chamado construtores:
 Quando quisermos iniciar valores para as variáveis de
instância;
 Quando criamos um objeto: new GradeBook3(), o
parênteses vazio indica que usaremos o Construtor
Padrão da linguagem Java.
Construtores
 O compilador Java fornece a todas as classes um
construtor padrão (construtor sem parâmetros);
 As variáveis de instância com tipo primitivo
recebem o valor padrão;
 As variáveis de instância com tipo Referência
recebem valor null;
 Ao declarar uma classe, podemos fornecer o nosso
próprio construtor:
public NOME_DA_CLASSE(argumentos) {
//Inicialização das variáveis de instância
}
Exemplo Prático
 Vamos modificar a nossa classe GradeBook3 e criar
um construtor que receba o nome do curso;
public class GradeBook4 {

//Variavel de instancia que guarda o nome do curso


private String courseName;

//O construtor inicializa courseName com o argumento String


public GradeBook4(String name) {
courseName = name; //inicializa courseName
} //fim do construtor

//Metodo para configurar o nome do curso


public void setCourseName(String name) {
courseName = name; //armazena o nome do curso
} //fim do metodo setCourseName
Exemplo Prático

//metodo para recuperar o nome do curso


public String getCourseName() {
return courseName;
} //fim do metodo getCourseName

// Exibe uma mensagem de boas-vindas


// ao usuario com o nome do curso
public void displayMessage() {
System.out.printf("Welcome to the Grade Book
for \n%s!\n", getCourseName());
}//fim do método displayMessage

} //fim da classe GradeBook


Exemplo Prático
 Criar a nossa classe de teste;
public class GradeBookTest4 {

public static void main(String[] args){

//Cria objetos GradeBook


GradeBook4 gradeBook1 = new GradeBook4("Introduction to Java Language");
GradeBook4 gradeBook2 = new GradeBook4("Human-Computer Interaction");

//Valor inicial de courseName para cada GradeBook


System.out.printf("gradeBook1 course name is: %s\n\n",
gradeBook1.getCourseName() );
System.out.printf("gradeBook2 course name is: %s\n\n",
gradeBook2.getCourseName() );
} //fim de main

} //fim da classe GradeBookTest


Construtores
 Importante:
 Ao criarmos um novo construtor, com ou sem
argumentos, o construtor padrão deixa de existir;
 Neste caso, não será mais possível instanciar um novo
objeto sem que haja um construtor com a quantidade de
argumentos para a sua criação.
Exemplos Práticos
 O diagrama de classe UML atualizado para a classe
GradeBook4.

GradeBook4

- courseName : String

<<construtor>> GradeBook( name: String )


+ setCourseName( name: String )
+ getCourseName( ) : String
+ displayMessage( )
Exercícios
1. Crie uma classe chamada Account que mantém o
saldo de uma conta bancária. A conta deve ter
uma variável de instância chamada balance
(saldo). Forneça métodos para configurar e
recuperar o saldo (balance) da conta. Crie um
construtor para permitir a inicialização do saldo da
conta. Se o valor passado for negativo, não
inicialize a variável de instância. Crie métodos para
depositar (deposit) e retirar (debit) valores da
conta. Crie uma classe de teste capaz de testar as
capacidades da classe.

Você também pode gostar