Orientação a Objetos com Java Julio Cesar Nardi julionardi@yahoo.com.br 2011/2
Apresentação 3: Orientação Objetos: Conceitos Básicos Objetivos: Compreender os Conceitos Básicos da Orientação a Objetos; Definir Classes com Dados e Comportamento; Criar Classes Java com Atributos e Métodos.
Agenda Conceitos OO Objeto, Classe, Atributo, Método, Associação, Composição, Herança Abstração, Encapsulamento, Modularidade, Hierarquia Sobrecarga, Polimorfismo, Ligação Dinâmica Modelagem OO UML OO em Java (básico) Classes, Atributos, Métodos, Construtores, Objetos
Orientação a Objetos (Aula 01) Mundo Real Problema Humanos Modelo de Solução Máquinas Código de Máquina Aula 01: Começando com OO e Java
Orientação a Objetos Objetivos: Trabalhar com conceitos intuitivos, mais próximos do Mundo Real; O mundo é composto por objetos Objetos: Objetos são capazes de encapsular suas propriedades e sua lógica, disponibilizando apenas o que é útil através de suas interfaces Exemplos: TV, Carro, Produto, Livro, Caneta, Cor, Pessoa, Cidade, Departamento, Animal, Conta, Voo, Aula, Reserva, Sentimento etc. A B C D E F
Objetos O mundo é povoado por elementos que interagem entre si, em que cada um deles desempenha um papel específico. Um objeto é uma entidade que incorpora uma abstração relevante no contexto de uma aplicação. Um Objeto: Possui Estado bem determinado; Exibe um Comportamento bem definido; Tem Identidade única.
Classes Uma classe descreve um conjunto de objetos com as mesmas propriedades, o mesmo comportamento, os mesmos relacionamentos com outros objetos, e a mesma semântica. Classe x Objeto: Todo objeto pertence a uma classe, ou seja, é instância de uma classe. Modelagem: Classe atributos... métodos()...() nome saldo OO e Java Conta depositar() sacar() imprimirsaldo()
Membros de Classes Uma classe é composta por: Dados, representando as Características: Variáveis ou Atributos Funcionalidades, representando o Comportamento Funções ou Métodos
Atributos Atributos representam os dados que os objetos de uma classe devem ter: As classes guardam quais são as características; Os objetos guardam os valores dessas características. Exemplo: Classe Pessoa: nome, altura, peso, sexo, idade Objeto Maria : Maria, 1,65, 55, F, 22 Objeto João : João, 1,80, 75, M, 25 Encapsulamento: atributos de um objeto devem ser acessados somente pelos seus métodos.
Métodos Representam as funcionalidades que os objetos de uma classe devem ter: Métodos são definidos nas classes, e podem ser chamados (invocados) a partir de seus objetos. Exemplo: Classe TV: ligar(), desligar(), mudar canal(), aumentarvolume(). Interface: os métodos públicos definem a interface de uma classe, permitindo acesso a seus dados e realizando operações úteis. Classes/objetos se comunicam através de mensagens (chamadas a métodos)
OO em Java Criação de Classes public class Conta {...} Criação de Atributos private double saldo = 0.0; Criação de Métodos cliente saldo Conta depositar() sacar() imprimirsaldo() public void imprimirsaldo() {...} Criação de Objetos new Conta(); A B C D E F A B C D E F
OO em Java Criação de Objetos new <nome classe>(); new Conta(); Criação de Classes public class <nome classe> {...} public class Conta {...} Criação de Atributos <visibilidade> <tipo> <nome> [=<valor>]; private double saldo = 0.0; Criação de Métodos <visibilidade> <retorno> <nome> (<argumentos>) {...} public double obtersaldo() {...}
/** Classe Conta. Responsável por manipular as Contas Bancárias. */ public class Conta { Conta /** Nome do Cliente */ private String cliente; cliente : String /** Saldo da Conta */ saldo : double private double saldo; /** Construtor padrão. */ public Conta() { } /** Deposita um valor na conta.*/ public void depositar(double valor) { this.saldo += valor; } /** Saca um valor da conta. */ public void sacar(double valor) { this.saldo -= valor; } depositar(valor : double) : void sacar(valor : double) : void imprimirsaldo() : void } /** Saca um valor da conta. */ public void imprimirsaldo() { System.out.println("Prezado, "+ cliente); System.out.println("Seu saldo atual é: R$ "+ saldo); } OO e Java
Java: Objetos Objetos são criados utilizando o operador new new <nome classe>([argumentos]); Cria um objeto na memória e retorna a referência para o objeto; Construtor da classe é executado; Variáveis são inicializadas; Objetos são destruídos quando inacessíveis (GC) Exemplos: String nome = new String( José ); Conta contacliente = new Conta(nome, 0.0); int i = 100; //???
Java: Classes Classes são criadas com a palavra chave class Nome da classe pública deve ser igual ao nome do arquivo Pode haver mais de uma classe no mesmo arquivo, e até mesmo classes dentro de outras classes As classes tipicamente contém: Atributos Métodos Construtores
Java: Classes /** Classe Conta. */ public class Conta { /** Atributos */ private String nome; private int numero; private double saldo; /** Construtor */ public Conta() { this.saldo = 0.0; } } /** Métodos */ public void depositar(double valor) {...} public void sacar(double valor) {...} OO e Java
Java: Atributos Atributos são declarados nas classes e possuem uma visibilidade, um tipo, um nome e um valor de inicialização. Sintaxe: [<visibilidade>] <tipo> <nome> [=<valor>]; Podem ser de tipos primitivos ou objetos Podem pertencer aos objetos ou à classe (static) Exemplo: private String nome = ; public int valor = 0; protected Data = null;
Java: Atributos A visibilidade dos atributos deve ser mantida privada sempre que possível: Encapsulamento! Atributos podem ser acessados através do operador. (ponto): int maximo = Integer.MAX_VALUE;
Java: Métodos Métodos são definidos nas classes e possuem: Visibilidade, Tipo de Retorno, Nome [Argumentos (ou parâmetros)] Corpo [Retorno] Sintaxe: [<visibilidade>] <retorno> <nome> ([<argumentos>]) { <corpo> [<retorno>] }; Exemplo: public int multiplicar(int a, int b) { int produto = a * b; return produto; }
Java: Métodos Podem pertencer a objetos ou à classe (static) Podem ter visibilidades variadas, dependendo da necessidade Os métodos de interface normalmente são públicos Podem ser abstratos (sem corpo) ou finais (sem sobreescrita) São acessado através do operador. (ponto): double saldo = contacliente.obtersaldo(); int produto = calculadora.multiplicar(7,13);
Exercícios (1) Crie a classe ContaBancaria de forma que seja possível: Saber o nome do cliente, número da conta e saldo atual; Realizar depósitos e saques; Imprimir o saldo (com cliente, número e saldo atual). Crie uma classe de aplicação (com método main), que manipule objetos do tipo ContaBancária: Crie 3 contas de clientes diferentes, realizar depósitos e saques e imprimir os saldos. Implemente uma funcionalidade de transferência entre contas;
Exercícios (2) Modele a classe Calculadora, que seja capaz de realizar as seguintes operações: Operações básicas (soma, subtração, multiplicação e divisão) de dois números; Seno, cosseno; Dica: procure a classe java.lang.math na documentação da API Java Implemente estes métodos como estáticos Implemente a classe calculadora com as funcionalidades modeladas e crie uma classe de aplicação que realize operações. Pergunta: é necessário criar objetos calculadora?
Apresentação 3: Orientação Objetos: Conceitos Básicos Objetivos: Compreender os Conceitos Básicos da Orientação a Objetos; Definir Classes com Dados e Comportamento; Criar Classes Java com Atributos e Métodos.