A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Introdução à Programação OO Usando Java Profa

Apresentações semelhantes


Apresentação em tema: "Introdução à Programação OO Usando Java Profa"— Transcrição da apresentação:

1 Introdução à Programação OO Usando Java Profa
Introdução à Programação OO Usando Java Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel e Júlio Machado) Revisão de Conceitos Convenção de Nomes Tipos de Dados e Operadores Classes e Objetos Sobrecarga de Métodos Exercícios

2 Revisão de Conceitos Abstração Projeto de um sistema OO Encapsulamento
Capturar as informações essenciais das entidades/objetos Projeto de um sistema OO Identificar as abstrações/entidades Identificar os serviços de cada uma Identificar os relacionamentos entre essas entidades Encapsulamento Esconder como as coisas funcionam (data hiding) por trás de uma interface externa

3 Revisão de Conceitos Exemplos de abstração Caneta Carro Funcionário
Aluno

4 Revisão de Conceitos Classe
“Modelo” que descreve uma abstração e a partir do qual podemos criar objetos de um dado tipo Uma classe é um tipo definido pelo usuário Associa dados e operações Atributos (ou variáveis): elementos que diferenciam objetos de uma mesma classe Métodos (ou funções): operações realizáveis sobre a classe (operam sobre os atributos)

5 Revisão de Conceitos Construtor
É executado automaticamente cada vez que um novo objeto é criado (método de inicialização) O nome do método construtor é o mesmo da classe O método construtor não possui tipo de retorno

6 Revisão de Conceitos Objeto = instância de uma classe
Depois de criado, conterá todas as variáveis incluídas na definição da sua classe Os atributos (ou variáveis) determinam o estado de um objeto Os métodos (ou funções) determinam o comportamento de um objeto Resumindo: um objeto consiste em um conjunto de estruturas de dados e de rotinas que agem sobre essas estruturas

7 Revisão de Conceitos Mensagem: Exemplo
Requisição para um objeto executar uma de suas operações (chamada a um método) Trocas de informações entre objetos Exemplo Classe Ponto getX getY deslocaXY imprimeXY x=2 y=4 getX getY deslocaXY imprimeXY Interface x=2 y=4

8 Revisão de Conceitos Exemplo Classe TestaPonto e classe Ponto
getX getY desloca(x,y) imprime(x,y) Ponto(x,y) Cria ponto (2,4) Imprime o ponto Desloca ponto: 1,1

9 Revisão de Conceitos Ponto O B J E T S Double x Double y Propriedades
Ponto(double x1, double y1) double getX() double getY() void desloca(double x1, double y1) void imprime() Propriedades Interface P1 2.0 4.0 Ponto(double x1, double y1) double getX() double getY() void desloca(double x1, double y1) void imprime() P2 7.3 5.9 Ponto(double x1, double y1) double getX() double getY() void desloca(double x1, double y1) void imprime() O B J E T S

10 Convenção de Nomes Classes: Arquivos Métodos
Substantivos que começam com uma letra maiúscula Exemplo: Pessoa, Lampada Arquivos Mesmo nome da classe com extensão .java Exemplo: Pessoa.java, Lampada.java Métodos Verbos que começam com uma letra minúscula Exemplo: getNome(), setNome(), ligaLampada()

11 Convenção de Nomes Atributos Variáveis locais e parâmetros Constantes
Substantivos que começam com uma letra minúscula Exemplo: nome, ligada Variáveis locais e parâmetros Pequenas e escritas em letras minúsculas Exemplo:i, j, k,n Constantes Letras maiúsculas separadas por _ MAX_SALARIO, MIN_VALOR, DEFAULT_COLOR

12 Tipos de Dados e Operadores
Tipos de dados primitivos inteiros: byte (8), short (16), int (32), long (64) 1, reais: float (32), double (64) 3.0F, 4.02E23, 3.0 caractere: char (16) ‘a’, ‘\n’ booleano: boolean (8) true, false

13 Tipos de Dados e Operadores
Variáveis int valor1, valor2=123; double taxa, percentual; Constantes final double PI = ; Operadores aritméticos: +, -, *, /, % (resto da divisão) relacionais: >, >=, <, <= igualdade: ==, != lógicos: &&, & (and), ||, | (or), ^ (xor), ! (not) atribuição: =, +=, -=, *=, /=, %= incremento, decremento: ++, --

14 Tipos de Dados e Operadores
String É uma classe e não tipo primitivo String nome = "Maria"; Concatenação: + String nomeCompleto = nome + " " + "Pereira"; Java converte outros tipos para strings int idade = 25; String nomeIdade = nome + " " + idade;

15 Classes e Objetos Definições de classes incluem (geralmente):
palavra-chave class modificador de acesso (garante encapsulamento) atributos de instância atributos de classe métodos de instância métodos de classe construtores

16 Classes e Objetos Modificadores de acesso
Permitem definir o encapsulamento de atributos e métodos Três modificadores principais: private: visível apenas na classe atual public: visível para qualquer classe externa protected: em breve...

17 Classes e Objetos Recomendações A menos que hajam razões fortes,
Os atributos de uma classe devem ser definidos como private (encapsulamento) Os métodos que são chamados de fora da classe devem ser public (interface de acesso) Métodos que devem ser usados somente dentro da própria classe, devem ser especificados como private

18 Classes e Objetos Exemplo: classe Professor
Atributos estão encapsulados!!! Apenas os métodos da própria classe professor podem acessar os atributos class Professor { private String nome; private int matricula; private int cargaHoraria; ... } // fim da classe

19 Classes e Objetos ... public String getNome(){ return(nome); }
public int getMatricula(){ return(matricula); public int getChsemanal(){ return(cargaHoraria); public float getChmensal(){ return(cargaHoraria * (float)4.5); } // fim da classe

20 Classes e Objetos Instanciação
Um objeto depois de criado, conterá todos os atributos e métodos descritos em sua classe. Para informar os valores dos atributos quando o objeto é instanciado, se utiliza um método especial: construtor ... Professor(String n,int mat,int chor){ nome = n; matricula = mat; cargaHoraria = chor; } } // fim da classe

21 Classes e Objetos Para instanciar (ou criar) um novo objeto em Java se utiliza o operador new Exemplo: Professor prof1; prof1 = new Professor("Maria",234,8); prof1 NULL nome: Maria matricula: 234 cargaHoraria: 8 Professor(String,int,int) String getNome( ) int getMatricula( ) int getChsemanal( ) int getChmensal( ) prof1

22 Classes e Objetos Para “matar” novo objeto em Java se utiliza null
Exemplo: Professor prof1; prof1 = new Professor("Maria",234,8); ... Prof1 = null; // garbage collection prof1 NULL nome: Maria matricula: 234 cargaHoraria: 8 Professor(String,int,int) String getNome( ) int getMatricula( ) int getChsemanal( ) int getChmensal( )

23 Classes e Objetos Quando o operador new é usado é “alocada” memória
Quando um objeto não é mais necessário, devolve-se o(s) recurso(s) para o sistema Java realiza a coleta de lixo automática da memória Quando um objeto não é mais utilizado, ele é marcado para coleta de lixo

24 Classes e Objetos Atributos Atributos de instância:
Cada objeto da classe possui uma cópia de cada atributo de instância Atributos de classe (static): A classe possui apenas uma cópia do atributo, compartilhando-o entre todos os objetos

25 Classes e Objetos Exemplo: public class Esfera {
// atributos da classe static double PI = 3.14; // atributos de instância double x, y, z; double raio; } bolinha x, y, z = (0, 0, 0) raio = 10 bolão x, y, z = (0, 5, -10) raio = 50

26 Classes e Objetos Métodos definidos em uma classe permitem a manipulação dos atributos da classe em questão Métodos Métodos de instância Métodos de classe (static) Podem ser executados mesmo que nenhum objeto tenha sido instanciado Exemplo: main()

27 Classes e Objetos class Esfera { Indica uma constante
static final double PI = 3.14; // atributos de instância double x, y, z; double raio; // método de instância public double volume ( ) { return 4.0/3.0*PI*raio*raio*raio; } // método de classe public static double getPI ( ) { return PI; Indica uma constante

28 Classes e Objetos Execução de um programa em Java
Um programa é composto de várias classes e objetos Para indicar por onde o programa começa a executar existe um método especial que o interpretador assume como o início do programa: main public static void main (String args[ ])

29 Sobrecarga de Métodos Java permite a definição de diversos métodos de uma mesma classe, com o mesmo nome, contanto que o conjunto de parâmetros seja diferente Assim, por exemplo, é possível ter múltiplos construtores

30 Sobrecarga de Métodos Exemplo: classe Esfera class Esfera { …
// construtores da classe public Esfera (double oraio, double a, double b, double c) { raio = oraio; x = a; y = b; z = c; } public Esfera () { // Cria uma esfera unitária raio = 1.0; x = 0.0; y = 0.0; z = 0.0; Esfera bola = new Esfera(); Esfera bolinha = new Esfera(10.0, 2.0, 2.0, 2.0);

31 Exercícios 1) É possível adicionar o construtor abaixo à classe Esfera? Esfera (double diametro, double a, double b, double c) { raio = diametro/2.0; x = a; y = b; z = c; }

32 Exercícios 2) Considerando a classe Ponto exemplificada anteriormente, defina uma classe Reta (Reta.java) com as seguintes características: Armazene um segmento de reta 2D (definido por 2 objetos da classe Ponto); Permita a criação de um objeto Reta a partir de dois pontos; Permita a criação de um objeto Reta a partir de dois pares de coordenadas double; Calcule o comprimento do segmento de reta;

33 Exercícios 3) Defina a classe TestaGeom para testar as classes Ponto e Reta implementadas nos exercícios anteriores. Esta classe deve: instanciar 2 objetos Ponto instanciar um objeto Reta visualizar no monitor a posição dos pontos criados e o comprimento da reta

34 Exercícios 4) Escreva uma classe Contador, que apresente métodos para informar o valor inicial, incrementar, decrementar e exibir o valor atual na tela. Exemplifique a utilização desta classe criando uma nova classe que crie dois ou mais contadores e use os métodos definidos. Por exemplo, crie 3 contadores e chame alguns métodos para incrementar/decrementar o contador. No final, exiba o valor de cada contador.

35 Respostas dos exercícios
1) Não!!! Pois os construtores possuem os mesmos parâmetros!!

36 Respostas dos exercícios
2) class Reta { Ponto p1; // Inicio da reta Ponto p2; // Fim da reta // Cria um segmento de reta a partir de dois pontos Reta (Ponto p1, Ponto p2) this.p1 = p1; this.p2 = p2; } Observe o uso do “this”

37 Respostas dos exercícios
// Cria um segmento de reta a partir de dois pares de // coordenadas Reta (double x1, double y1, double x2, double y2) { p1 = new Ponto(x1, y1); p2 = new Ponto(x2, y2); } // Calcula o comprimento do segmento de reta double comprimento ( ) double x = p1.getX()-p2.getX(); double y = p1.getY()-p2.getY(); return Math.sqrt(x*x+y*y); ATENÇÃO Observe a diferença entre os dois construtores. No primeiro, são utilizados objetos Ponto já existentes enquanto que no segundo dois objetos Ponto novos são criados para definir um objeto Reta.

38 Respostas dos exercícios
3) class TestaGeom { public static void main (String[] args) Ponto ini = new Ponto(0.0, 1.0); Ponto fim = new Ponto(5.0, 6.0); Reta linha1 = new Reta(ini, fim); Reta linha2 = new Reta(0.0, 3.0, 3.0, 0.0); ini.mostra(); fim.mostra(); System.out.println("Comprimento da linha1 = " + linha1.comprimento()); }

39 Respostas dos exercícios
public class Contador { private int cont; public Contador() { cont = 0; } public Contador(int c) { cont = c; } public void incrementa( ) { cont++; } public void incrementa(int x) { cont += x; public void decrementa( ) { cont--; public int get( ) { return cont; public void exibe( ) { System.out.println("Contador = " + cont ); 4)

40 Respostas dos exercícios
4) public class TestaContador { public static void main(String[] args) Contador c1, c2, c3; c1 = new Contador(); c2 = new Contador(4); c3 = new Contador(10); c1.incrementa(); c2.decrementa(); c3.incrementa(); c3.incrementa(4); System.out.println("Valores dos contadores c1, c2 e c3:"); c1.exibe(); c2.exibe(); c3.exibe(); }


Carregar ppt "Introdução à Programação OO Usando Java Profa"

Apresentações semelhantes


Anúncios Google