Vous êtes sur la page 1sur 28

Introdução à Programação Orientada por Objetos

Definição de Classes
Prof. José Cordeiro,
Prof. Rui César das Neves
Departamento de Sistemas e Informática
Escola Superior de Tecnologia de Setúbal – Instituto Politécnico de Setúbal
2016/2017
Sumário

 Estrutura duma classe

 Definição de atributos

 Construtores (e parâmetros)

 Instruções de atribuição

 Identificadores

 Métodos

 Escrever no ecrã

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 2


Exemplo – Máquina de Bilhetes (TicketMachine)

 Requisitos da Máquina de Bilhetes


 Pretende-se uma máquina que
faça a venda automática de
bilhetes.
 Os bilhetes têm um preço único.
 Os clientes deverão poder
introduzir uma determinada
quantia.
 Será possível visualizar o bilhete.
 Será possível saber o preço do
bilhete e a quantia colocada.
 Será possível saber qual a quantia
total colocada na máquina.

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 3


Exemplo – Máquina de Bilhetes (TicketMachine)

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 4


Estrutura de uma classe básica

public class TicketMachine


{

Código da classe omitido

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 5


Estrutura de uma classe básica
palavra class nome da classe
modificador de visibilidade

public class TicketMachine


{

corpo da classe Código da classe omitido

 public e class são palavras reservadas da linguagem Java


 As palavras reservadas (ou Keywords) são palavras que têm
um significado particular na linguagem
 Outros exemplos: int, private
18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 6
Atributos

public class TicketMachine


{
private int price;
private int balance;
private int total;

Construtores e métodos omitidos


}

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 7


Definição de um atributo

tipo
modificador de visibilidade nome da variável

private int price;


fim da instrução

 Os atributos armazenam valores de um determinado tipo


 Os atributos são variáveis
 Também são chamados variáveis de instância
 A definição dum atributo é uma instrução do Java
 Normalmente são definidos como sendo privados ( private )

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 8


Construtores

public class TicketMachine


{
Atributos

public TicketMachine(int ticketCost)


{
price = ticketCost;
balance = 0;
total = 0;
}

Métodos
}

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 9


Construtores

public TicketMachine(int ticketCost)


{
código do construtor
}

 Os construtores servem para inicializar os objetos.


 Têm o mesmo nome que a classe.
 Encarregam-se de fornecer os valores iniciais dos atributos. Como?
 Frequentemente recebem os valores dos atributos do exterior através
dos parâmetros. Como?

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 10


Instruções de atribuição

public TicketMachine(int ticketCost)


{
price = ticketCost;
balance = 0;
total = 0;
}

 As instruções de atribuição servem para colocar valores em


variáveis.
 Neste exemplo está-se a colocar valores nos atributos (que são
variáveis)

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 11


Instruções de atribuição

operador de atribuição

variável expressão cujo valor vai


ser atribuído

balance = 0;

fim da instrução

 As instruções de atribuição funcionam a “dois tempos”:


1. Calcula-se a expressão do lado direito do ‘=‘.
2. O resultado de 1. é colocado dentro da variável.
 As variáveis guardam apenas um valor. Se colocarmos um
outro valor na mesma variável o valor anterior é perdido.
18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 12
Passagem de informação através de parâmetros

new TicketMachine(500)

public TicketMachine(int ticketCost)


{
price = ticketCost;
balance = 0;
total = 0;
}

 Os parâmetros tal como os atributos são variáveis.


18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 13
Passagem de informação através de parâmetros

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 14


Passagem de informação através de parâmetros

new TicketMachine(500)

Parâmetro atual (argumento)

public TicketMachine(int ticketCost)


{
price = ticketCost;
balance = 0; Parâmetro formal
total = 0;
}
 Os parâmetros formais dizem-nos que tipo de informação se
deve receber (o valor ticketCost dado como um inteiro).
 Os parâmetros atuais ou argumentos são os valores concretos
fornecidos.
18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 15
Identificadores
 Os nomes que se dão às variáveis que representam os atributos ou os
parâmetros, às classes e aos métodos chamam-se identificadores.
 Os identificadores devem começar por uma letra ou pelo caracter sublinhado (_)
e devem ser seguidos de letras ou dígitos.
 Os identificadores não podem ser palavras reservadas do Java, nem ter espaços.
 O Java distingue entre caracteres maiúsculos e minúsculos. Price e price são
identificadores diferentes.
 Os identificadores devem comunicar claramente o que significa a variável
ou o método.
 Por exemplo: price, name, age, etc em vez de p, t5, xyz.
 Por convenção não se deve utilizar abreviaturas como identificadores.
 Por convenção se os identificadores forem compostos por duas ou mais
palavras deve-se usar a notação PascalCase ou camelCase dependendo
de que identificador se trata.
18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 16
Notação PascalCase e notação CamelCase

 Na notação PascalCase quando se cria um nome com mais que uma


palavra colocam-se as palavras desse nome em minúsculas à exceção
da primeira letra de cada palavra que deverá ser maiúscula. Não se
usam abreviaturas nem separadores entre palavras
 Exemplo: NumberOfStudents, TicketMachine, MaximumHeight
 Contra-exemplo: Number_of_Students, TickMachine,
max_height
 Usada para identificadores de Classes
 A notação camelCase é idêntica à PascalCase com a diferença que a
primeira letra da primeira palavra é uma minúscula
 Exemplo: moveRight, studentTotal, itemQuantity
 Usada para identificadores de atributos, métodos, parâmetros

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 17


Métodos
public class TicketMachine
{
Atributos
Construtores

public int getPrice()


{
return price;
}

public void insertMoney(int amount)


{
balance = balance + amount;
}

… mais métodos
}

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 18


Definição dum método

tipo de retorno parâmetro do método

modificador de visibilidade nome do método

public void insertMoney(int amount)


{
balance = balance + amount;
Corpo do método
}

 O cabeçalho do método diz-nos o nome do método, os


parâmetros que tem, se retorna ou não um valor e a sua
visibilidade (normalmente public )
 O corpo do método contém as instruções que serão executadas

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 19


Definição dum método

tipo de retorno parâmetros do método


(sem parâmetros)
modificador de visibilidade nome do método

Início e fim public int getPrice()


do corpo { instrução de retorno
do método return price;
(bloco)
}

 A corpo do método começa com abrir chavetas e termina com


fechar chavetas tal como o corpo das classes. Em Java um
conjunto de instruções delimitadas por chavetas chama-se um
bloco.

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 20


Instruções de retorno

expressão cujo valor vai


ser retornado

palavra return

return price;

fim da instrução

 As instruções de retorno são usadas para se sair dum método.


No caso do método retornar um valor devem ser seguidas da
expressão cujo cálculo dá o valor a ser retornado.

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 21


Métodos
 Os métodos implementam o comportamento dos objetos.
 Os métodos que nos permitem saber informação dos atributos são os métodos
inspetores ou seletores.
 Normalmente têm o prefixo get (mas nem sempre).
 Retornam o valor do atributo respetivo, não têm parâmetros
 Exemplo: int getPrice()
 Os métodos que nos permitem alterar o estado dos objetos, ou seja alterar o
valor dos atributos, são chamados os métodos modificadores.
 Normalmente têm o prefixo set (mas nem sempre)
 Não retornam valores (são void), recebem o valor do atributo a alterar
 Exemplo: void setPrice(int price)
 Existem métodos modificadores que alteram o valor dos atributos mas que não
colocam diretamente um valor que recebem no atributo. Nestes casos não necessitam
de ter o prefixo set. Exemplo: void insertMoney(int amount)

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 22


Construtores versus Métodos

public TicketMachine(int ticketCost) public int getPrice()


{ {
price = ticketCost; return price;
balance = 0; }
total = 0;
}

Construtor Método
 Têm o mesmo nome que a  O nome é definido pelo
classe programador

 Não têm tipo de retorno  Tem tipo de retorno


(mesmo que seja void)

 Só é executado para a  Pode ser executado em


construção do objeto qualquer altura

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 23


Comentários
início do comentário
/*
* TicketMachine models a naive ticket machine that issues
*/
fim do comentário
public class TicketMachine
{
// The price of a ticket from this machine. Válido só nesta linha
private int price;

 Na definição das classes além do código Java é possível incluir comentários


 Os comentários são textos ignorados pelo compilador que ajudam a
documentar a classe.
 Existem comentários de várias linhas (multilinha) e de uma linha apenas.
 Os comentários multilinha começam após a sequência de caracteres ‘/*’ e terminam com a
mesma sequência de caracteres pela ordem inversa ‘*/’ . O texto pode ocupar várias linhas
 Os comentários de linha começam após a sequência de caracteres ‘//’ e terminam no fim da
linha
18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 24
Teste de sintaxe

public class CokeMachine


{
int
private price;

public CokeMachine()
{
price = 300 ; Existem
}
5 erros!!!
public int getPrice ()
{
p
return Price;
}
}
18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 25
Escrever no ecrã a partir de métodos

public void printTicket()


{
// Simulate the printing of a ticket.
System.out.println("##################");
System.out.println("# The BlueJ Line");
System.out.println("# Ticket");
System.out.println("# " + price + " cents.");
System.out.println("##################");
System.out.println();

// Update the total collected with the balance.


total = total + balance;
// Clear the balance.
balance = 0;
}

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 26


Concatenação de textos - Exemplos

 4+5
9

 "wind" + "ow"
"window"  Quando se juntam textos a um texto
inicial tudo o que não for um texto é
 "Resultado: " + 6 convertido antes para texto
"Resultado: 6"  Por exemplo: "Resultado: " + 6
Ao juntar o número 6 ao texto "Resultado: "
primeiro o 6 é convertido para "6" e só depois é
 "# " + price + " cents" acrescentado, ficando no fim: "Resultado: 6"

"# 500 cents"

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 27


Bibliografia

 Objects First with Java (6th Edition), David Barnes & Michael Kölling,
Pearson Education Limited, 2016
 Capítulo 2 (2.1 a 2.11)

18/10/2016 Prof. José Cordeiro – Prof. Rui César das Neves 28

Vous aimerez peut-être aussi