Você está na página 1de 37

Introdução a Classes,

Objetos e Métodos

Programação Orientada a Objeto (1COP009)


Prof. Bruno Bogaz Zarpelão
Objetivo
• Entender dois conceitos fundamentais de OO:
– Classe.
– Objeto.

2
Finalmente, orientação a objetos!
• Orientação a objetos é um paradigma de análise,
projeto e programação de software baseado na
composição e na interação de objetos... Objetos do mundo real: pessoa,
cachorro, carro, avião, mesa,
• O que são objetos? fórmula matemática,
pensamento...não precisa ser algo
– São abstrações do mundo real; concreto...
– São estruturas que contém as informações e
comportamentos que retratam a abstração de um objeto
do mundo real;
Orientação a objetos: formalizando...
• Uma definição mais formal de orientação a objetos:
– “Programação Orientada a Objetos é um método de
implementação no qual programas são organizados como
uma coleção de objetos cooperativos, onde cada um deles
representa um instância de alguma classe, e cujas classes
são membros de uma hierarquia de classes unificada por
suas relações de herança.” (Booch, 1994).

Qual é a diferença entre classes


e objetos??????? Alguém
sabe????
Orientação a objetos: primeiros passos
• Programação orientada a objetos utiliza conceitos que
aprendemos na infância:
– Objetos, atributos de um objeto, comportamento de um
objeto, classificação, como definir se algo faz parte de uma
determinada classificação...
• Nas últimas aulas, tínhamos falado que os
desenvolvedores ainda tem dificuldade de lidar com
OO...se é tão natural, por que existe a dificuldade?
Orientação a objetos: primeiros passos
• Orientação a objetos é uma mudança de paradigma!
• Paradigma: modelo, padrão, protótipo...
• Mudança de paradigma neste caso é mudança de
padrão de comportamento;
• Toda quebra de paradigma é difícil, mesmo que a
alternativa a ser assumida seja mais natural;
Padrão de comportamento era
pensar orientado a
ações...agora temos que pensar
orientado a objetos
Orientação a objetos: 4 recursos chave
• As linguagens orientadas a objetos suportam quatro
recursos chave:
– Abstração
– Herança;
– Polimorfismo;
– Vinculação dinâmica;
Abstração
• O que á abstração?
• Especificação das características relevantes dos
elementos que o sistema manipulará;
• A especificação envolve:
– Atributos (variáveis de instância);
– Operações (métodos);
– Relacionamentos com outros elementos;
Classes
• Como já dissemos anteriormente, a orientação a
objetos tem relação com o raciocínio das crianças;
• A criança representa o seu conhecimento por meio de
classificações e abstrações:
– Carro: 4 rodas, um volante e capacidade de andar;
– Cachorro: pelos e capacidade de latir;
Classes
• Ok, mas e as classes?
• A classe é um grupo de objetos com as mesmas
características:
– Cada carro é um objeto diferente, mas todos eles tem rodas,
buzina e andam “sozinhos”;
– Temos então a classe “carro”;
– Classe -> classificar -> classificação...
• A criança analisa as características do objeto para
classificá-lo;
Classes
• Este processo que descrevemos envolve forte
abstração:
– Carros também tem cores, modelos, opcionais, etc...tudo
isso deve ser ignorado para que um Fusca e um Porsche
sejam classificados como carros. Isto faz parte do processo
de abstração!
Classes
• Em resumo, a classe “carro” agrupa todos os objetos
que compartilham:
– Os atributos rodas, portas, luzes, vidros...
– As operações andar, buzinar, etc.
Classes: formalizando...
• Classe:
– Definição de um conjunto de objetos que compartilham os
mesmo atributos e comportamento;
– Representação de um conjunto de coisas reais ou abstratas
que são reconhecidas como sendo do mesmo tipo por
compartilhar as mesmas características, atributos, relações e
semântica (significação).
Objetos
• Um objeto é uma instância de uma classe;
• Objeto é uma entidade capaz de reter um estado
(informação) e que oferece uma série de operações
(comportamentos) ou para examinar ou para afetar este
estado.
• Objeto:
– Apresenta características (Estado).
– Executa e sofre ações (Comportamento).
– Podem ser classificados por categorias ou classes.
Objetos
Valores dos atributos de um objeto em um
determinado momento. O carro tem o atributo
• Um objeto é uma instância de uma classe;
cor, cujo valor pode ser vermelho, por exemplo.

• Objeto é uma entidade capaz de reter um estado


(informação) e que oferece uma série de operações
(comportamentos) ou para examinar ou para afetar este
estado.
• Objeto:
– Apresenta características (Estado).
As operações consultam ou alteram o estado do
objeto.
– Executa e sofre ações (Comportamento).
– Podem ser classificados por categorias ou classes.
Componentes de uma classe...
• Uma classe tem três componentes:
– Nome;
– Atributos (variáveis de instância);
– Operações (métodos);
Componentes de uma classe...
• Atributos:
– São o conjunto de características que descrevem os objetos
– Atributos de uma pessoa: cor dos olhos, altura, peso, idade,
sexo..
– Quais são os atributos de uma conta corrente?
• Vamos levantar os atributos de uma conta corrente...
• Como seria a classe conta corrente?
• E os objetos desta classe?
Atributos e objetos
• Nos objetos (instâncias de uma classe), os atributos
recebem valores que definem o estado de um objeto;

• Vamos conferir um exemplo simples em Java!


public class Account {
private String name; // instance variable

// method to set the name in the object


public void setName(String name) {
this.name = name; // store the name
}

// method to retrieve the name from the object


public String getName() {
return name; // return value of name to caller
}
}
19
Modificadores de acesso: public x private
• Atributo public: pode ser acessado (lido e modificado)
por qualquer outro método em qualquer outro objeto.
• Atributo private: só pode ser acessado (lido e
modificado) por outros métodos presentes na mesma
classe.
• Quando usamos private, podemos evitar que sejam
atribuídos valores inadequados a atributos. Por
exemplo: uma nota 12 em um atributo que deve receber
notas de 0 a 10.
20
Métodos e objetos
• Quando começamos a tratar de classes e objetos,
mencionamos dois pontos importantes: informação e
comportamento;
• Os atributos atendem a questão da informação;
• E o comportamento?
– O comportamento é representado pelos métodos!
– Métodos também são chamados algumas vezes de
operações ou serviços;
Métodos e objetos
• Métodos são as tarefas que os objetos podem realizar;
• Estas tarefas podem:
– Acessar o conteúdo de um atributo;
– Modificar o conteúdo de um atributo;
– Interagir com outros objetos;
Métodos e Java
• Assinatura do método:
– public void mostrarMensagem(String mensagem)

Modificador Tipo de Nome parâmetro


de acesso retorno do
método
public class Account {
private String name; // instance variable

// method to set the name in the object


public void setName(String name) {
this.name = name; // store the name
}

// method to retrieve the name from the object


public String getName() {
return name; // return value of name to caller
}
}
24
Métodos e Java
• Podemos ter métodos:
– Sem parâmetros e sem retorno:
• public void mostrarConteudoObjeto();
– Sem parâmetros e com retorno:
• public int getIdade();
– Com parâmetros e sem retorno:
• public void atribuirIdade(int idade);
– Com parâmetros e com retorno:
• public int converterTemperatura(int tempCelsius);
Métodos e Java
• Convenções para nomeação:
– Nomes de métodos começam por verbos, já que envolvem
ação/tarefa;
– Nomes de métodos começam por letra minúscula:
converterTemperatura, coletarMensagem, desligarAlarme,
etc.
import java.util.Scanner;

public class AccountTest {


public static void main(String[] args) {
// create a Scanner object to obtain input from the command window
Scanner input = new Scanner(System.in);

// create an Account object and assign it to myAccount


Account myAccount = new Account();

// display initial value of name (null)


System.out.printf("Initial name is: %s%n%n", myAccount.getName());

// prompt for and read name


System.out.println("Please enter the name:");
String theName = input.nextLine(); // read a line of text
myAccount.setName(theName); // put theName in myAccount
System.out.println(); // outputs a blank line

// display the name stored in object myAccount


System.out.printf("Name in object myAccount is:%n%s%n",
myAccount.getName());
}
}

27
Exercício
• Construa um programa com os seguintes requisitos:
– O programa deve ter uma classe “Carro” com os seguintes
atributos: marca e modelo;
– A classe Carro deve ter um método que recebe como
parâmetro a velocidade atual do carro e retorna qual deve
ser a marcha utilizada;
– o programa deve conter uma classe main na qual o usuário
vai informar os dados do carro (marca e modelo) e a
velocidade. O programa vai imprimir na tela os dados do
carro e a marcha adequada.

28
Tipos primitivos x Tipos por referência
• Tipos primitivos: int, boolean, float, etc. Variáveis de
tipos primitivos armazenam um valor de acordo com o
seu tipo.
• Tipos por referência: armazenam o local do objeto na
memória.
– Variáveis deste tipo que não são inicializadas guardam um
valor null.

29
Variáveis de Referência
public class Principal { Variáveis
de
Referência

objA capacidade 350


public void método ( ) { quantidade 0

Recipiente objA = new Recipiente (350);


Recipiente objB = new Recipiente (500); objB
...
sucess = objA.adicionar (50);
capacidade 500
quantidade 0
} }

Espaço de memória
administrado pela JVM,
denominado HEAP
30
Variáveis de Referência
public class Cliente { Variáveis
de
Referência

objA capacidade 350


public void método ( ) { quantidade 0

Recipiente objA = new Recipiente (350);


Recipiente objB = objA ;

...
sucess = objA.adicionar (50); objB

} }

Espaço de memória
administrado pela JVM,
denominado HEAP

31
Mudança de Estado na memória
1
public class Cliente {
objA capacidade 350
quantidade 0

public void método ( ) {


2
1 Recipiente objA = new Recipiente (350);
... objA
2 sucess = objA.adicionar (50); capacidade 350
...
quantidade 50
3 objA= null ;
...
}
3
}
objA
null
capacidade 350
quantidade 50

32
Construtor
• É o método utilizado pelo Java para construir um objeto;
• Características:
– Tem o mesmo nome da classe;
– Não tem nem tipo de retorno e nem “void”;
– É executado toda vez que o comando “new” é usado;
Construtor
• Podemos passar também parâmetros para o construtor:
– esse parâmetro pode, por exemplo, inicializar o valor de um
atributo.
• Construtor padrão não tem parâmetros.
• Uma classe que tem um construtor declarado, não tem
mais o construtor padrão.

34
public class Account {
private String name; // instance variable

// constructor initializes name with parameter name


public Account(String name) { // constructor name is class name
this.name = name;
}

// method to set the name


public void setName(String name) {
this.name = name;
}

// method to retrieve the name


public String getName() {
return name;
}
}

35
public class AccountTest {
public static void main(String[] args) {
// create two Account objects
Account account1 = new Account("Jane Green");
Account account2 = new Account("John Blue");

// display initial value of name for each Account


System.out.printf("account1 name is: %s%n", account1.getName());
System.out.printf("account2 name is: %s%n", account2.getName());
}
}

36
Aumentando um pouco o nosso código…
• Vamos adicionar um atributo do tipo double, que irá
armazenar o saldo da conta.

37

Você também pode gostar