• Nenhum resultado encontrado

Aula 03 Objetos e Classes

N/A
N/A
Protected

Academic year: 2021

Share "Aula 03 Objetos e Classes"

Copied!
46
0
0

Texto

(1)

Objetos e Classes

Curso de Especialização em Engenharia de Software Prof. Dr. Bruno J. T. Fernandes

(2)
(3)

Decomposição Funcional

Comece com o problema geral e

(4)

Decomposição Funcional

Implemente as funções de mais baixo nível e combine-as para obter o programa completo

(5)

Decomposição Funcional

Foco nas funções

 Dados são considerados posteriormente

Dados são passados de uma função para outra como numa linha de produção

Difícil manutenção

(6)

Programação Estrutura x Orientada a

Objetos

Estruturada

 Funções para resolver um problema

 Primeiro decidir como manipular os dados

 Estruturas para armazenar os dados

 Decidir quais melhores estruturas para representar

os dados

Orientada a Objetos

 Definição das estruturas de dados  Definição das operações

(7)

Orientação a Objetos

Foco nos dados primeiro

Estruturação do programa é baseada na representação

de objetos do mundo real (estados + comportamento)

Olhar tudo como se fosse objeto

Modelar primeiro os dados depois operaçõesOs dados são encapsulados nos objetos

A estrutura de dados só precisa ser compreendida pelo

objeto ao qual os dados pertencem

A mudança na estrutura de um objeto deve impactar

somente na sua lógica interna

Cada objeto é o responsável por garantir a integridade

(8)
(9)

duracaoDisco

parar() avancar() voltar()

tempoDecorrido horaAtual tipoSistema

alterarHora() tocar()

carregarDisco()

(10)

Orientação a Objetos

O objeto é uma estrutura complexa que

possui dados e operações (encapsulamento)

 Os dados, inclusive, podem ser outros objetos

(atributos)

 As operações manifestam o comportamento de

(11)

Objeto Conta Bancária

Número Saldo 21.342-7 875,32 creditar debitar

(12)

Estado do Objeto Conta

creditar(20.00) Número Saldo 21.342-7 875,32 creditar debitar Número Saldo 21.342-7 895,32 creditar debitar

(13)
(14)
(15)

O que é uma classe?

Abstração que define características comuns entre objetos

(16)

Classes e Objetos

Classe é um conceito de Orientação a

Objetos que agrupa categorias com

características semelhantes. Uma classe define um tipo.

Classes servem como “moldes” ou

“formas” para criação de objetos

Objetos são “instâncias” de uma

determinada classe, compõe-se e comporta-se de acordo com uma

determinada classe. São estruturas complexas que possuem:

(17)

Igualdade x Identidade

Dois objetos são idênticos quando eles são o mesmo

Dois são iguais quando eles têm o mesmo conteúdo

(18)

Instanciação

Reserva um espaço na memória para

armazenar os atributos de um novo objeto

Associa um conjunto de comportamentos com o objeto

Refere-se a criação de um objeto em tempo de execução

(19)
(20)

Relacionamento entre classes

Tipos de relacionamento:

 Usa, Inclusão (contém), É Um (herança)

Relacionamento de Inclusão:

 Acontece quando uma classe possui como

atributo um objeto de outra classe

 Ex: um cliente possui um endereco

Endereco

(21)

Definindo classes em Java

public class Conta{ Atributos Construtores Métodos } class NomeDaClasse { atributo1; atributo2; método1() { Corpo do método1 } método2() { Corpo do método2 } }

modificador class Nome { CORPO }

modificador pode ser

(22)

Padrão de nome de classe

Nome de classe deve começar com letra

maiúscula

 Ex: Conta, Cliente, Banco, Endereco

Nomes compostos não são separados por

_. A primeira letra da palavra seguinte é maiúscula.

 Ex: PessoaJuridica, PessoaFisica

Evite abreviações no nome e use nomes

com alguma relação mnemônica com o que a classe modela.

(23)

Declaração de atributos

modificadores podem ser:

 De visibilidade/acesso:

 public, protected, “default”, private

 De escopo:

 static

 De definição de constantes:

 final

private String numero ;

(24)

Padrão de nome de atributo

Nomes de atributos devem começar com

letra minúscula

 Ex: int ano;

Nomes compostos não são separados por

_. A primeira letra da palavra seguinte é maiúscula.

 Ex: int anoDePublicacao;

Evite abreviações e use nomes com

alguma relação mnemônica com o que o atributo modela.

(25)

Exemplos

private String numero; double saldo;

protected String nome, sobrenome; public valorInicial;

(26)

Acesso a atributos com this

Atributos em um objeto podem ser acessados com o modificador this.

public class Ponto { private double x; private double y;

void calcularProduto() {

double produto = this.x * this.y; }

(27)

Métodos

Métodos são operações que realizam

ações e modificam os valores dos atributos do objeto responsável pela sua execução

public class Conta {

private String numero; private double saldo;

void creditar(double valor) { saldo = saldo + valor;

}

... }

(28)

Declaração de métodos

modificadores podem ser:

 public, protected, “friendly”, private, static, finalAssinatura de um método:

É o que identifica um método

 Composta por nome, lista de parâmetros

(quantidade, tipo, ordem)

private double obterRendimento(String numConta, int mes); modificadores tipo de retorno nome ( parâmetros ) ;

(29)

Padrão de nome de métodos

Segue o mesmo padrão para nomes de atributos:

 Inicia com minúscula e segue a regra da

palavra composta

Normalmente nomes de métodos usam verbos no infinitivo:

(30)

Métodos e tipo de retorno

O tipo de retorno de um método pode

ser qualquer tipo válido em Java:

 Tipo Primitivo:

 int, double, char, long, boolean

 Tipo Referenciado:

 Qualquer tipo que não é primitivo  Conta, String, Date, Cliente

Métodos que retornam valores devem

fazê-lo com o comando return;

Métodos que não retornam valores

(31)

Métodos e tipo de retorno

public class Conta {

private String numero; private double saldo; String getNumero() { return numero; } double getSaldo() { return saldo; } void setSaldo(double s){ saldo = s; } ...

(32)

Mais sobre métodos

public class Conta { ...

void debitar(double valor) { saldo = saldo - valor;

} }

Por quê o debitar não tem como parâmetro o número da conta?

(33)

O corpo do método

O corpo do método contém os comandos

que determinam as ações do método

Esses comandos podem

 realizar simples atualizações dos atributos de

um objeto

 retornar valores

 executar ações mais complexas como chamar

(34)

Boas práticas

Declare sempre atributos como private, há

menos que se tenha fortes razões para não fazê-lo

Para permitir acesso de leitura a um

atributo x, crie um método público getX que devolve o atributo

Para permitir acesso de escrita a um

atributo x crie um método público setX que modifica o valor do atributo x

(35)

Chamada de métodos

Os objetos se comunicam para realizar

tarefas

Parâmetros são passados por “cópia”

A comunicação é feita através da chamada

de métodos variável contendo referência para objeto conta.creditar(45.30) nome do método a ser executado operador de chamada de método

(36)

Criação de objetos

Objetos precisam ser criados antes de serem utilizados

A criação é feita com o operador new

 Aloca um objeto na memória do tipo de uma

classe e devolve o endereço para ser armazenado na variável.

Conta c = new Conta()

(37)

Construtores

Além de métodos e atributos, uma classe pode

conter construtores

Construtores definem como os atributos

de um objeto devem ser inicializados

São semelhantes a métodos, mas não têm tipo de

retorno

nome da classe ( parâmetros )

corpo do construtor

{

}

modificador

public Navio(String umNome, int umNumero) { nome = umNome;

numCabines = umNumero; }

(38)

Construtor default

Caso não seja definido um construtor, um

construtor default é fornecido implicitamente

O construtor default inicializa os atributos

com seus valores default

O construtor default não tem parâmetros:

public Conta() { }

(39)

Outros construtores

Uma classe pode ter mais de um

construtor

 Se diferenciam pela lista de parâmetros

Quando é definido um construtor com

parâmetros, o construtor default não é mais geradopublic class Conta { public Conta(String numeroConta,

double saldoInicial){ numero = numeroConta;

saldo = saldoInicial; }

(40)

Boa prática

A cada classe implementada, crie um

construtor que recebe parâmetros e preenche todos os atributos com estes parâmetros.

(41)

null indica uma referência nula. Indica que o atributo

não faz referência a um objeto

Valores default para atributos

0 para byte,short,int,long,float, double.‘\u0000’ para char

false para boolean

null para tipos referência (Strings, arrays,

(42)

Referências

Objetos são manipulados através de referências c == null Conta c = null; c = new Conta(“1287”,0); c.getSaldo(); c

chama o método getSaldo() do objeto referenciado pela variável c

(43)

Aliasing

Mais de uma variável pode armazenar a

mesma referência para um dado objeto (aliasing)

Conta a = new Conta(“123-4”,340.0); Conta b; b = a; b.creditar(100); System.out.println(a.getSaldo()); a e b passam a referenciar a mesma conta

qualquer efeito via b é refletido via a

(44)

Métodos deprecated

São métodos que apresentam algum

problema, bug ou efeito colateral

Indicados em tempo de compilação

Corrigidos nas versões mais novas de JavaPodem ser utilizados normalmente

Ex:

Component.show() foi substituído por

(45)
(46)

Princípios de OO

Dividir-e-conquistarEncapsulamentoInterfaceEsconder informaçãoGeneralizaçãoExtensibilidadeAbstração

Referências

Documentos relacionados

Para o tratamento e análise de dados optou-se por um corte, considerando-se apenas um determinado produto, no caso o xampu, que fosse produzido e distribuído para grande

Assim, este estudo buscou identificar a adesão terapêutica medicamentosa em pacientes hipertensos na Unidade Básica de Saúde, bem como os fatores diretamente relacionados

Descontos em valor total (gratuidade), se houver e quando aplicáveis, são condicionados a existência de estoque deste e serão comunicados expressamente através

«A clareza no enunciado das proposições, a correcção no desenvolvimento dos raciocínios, o vigor insinuante da exposição, o interesse que revela para se

Av. José de Sá Maniçoba, s/n, Centro – Petrolina-PE CEP. 7º da Lei 10.520, de 17 de julho de 2002, quem, convocado dentro do prazo de validade da sua proposta,

Germânicas; Professora Doutora Patrícia Maria Campos de Almeida, Professor 11.. Adjunto, Chefe do Departamento de Letras Vernáculas; Professora Doutora Kristine

Categoria A: mapas onde fica evidente que o aluno não possui subsunçores relevantes sobre o tema de estudo (quando utilizado como instrumento para averiguar o

RESUMO: A partir da premissa de que a inovação não se restringe à alta tecnologia ou a um intenso grau de pesquisa e desenvolvimento, sendo muito relevante no contexto da