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

Slides:



Advertisements
Apresentações semelhantes
Programação orientada a objetos
Advertisements

Java e OO – Isso é só um roteiro de aula
Laboratório de Programação
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Prof. Thiago Pereira Rique
Interação entre objetos
Programação para Engenharia I
Orientação a Objetos: Encapsulamento e Classificação
Orientação a Objetos: Encapsulamento e Classificação
Java: Comandos Básicos
Programação Orientada a Objetos*
Programação Básica em Java
Polimorfismo e Acoplamento Dinâmico
PROGRAMAÇÃO MODULAR (com uso de subprogramas)
Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios.
Polimorfismo e Classes Abstratas Profa
Expressões, controle de fluxo, wrappers e strings Profa
Introdução à Programação OO Usando Java Profa
Vector e Estruturas Encadeadas Profa
Herança Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs: Luciana Nedel e Júlio Machado) Packages (bibliotecas de classes) Atributos.
1 Professor Rogério B. de Andrade - Aula 001- Dez/2008 Técnicas e Linguagem de Programação.
Engenharia de software OO1 Engenharia de Software Orientada a Objetos.
Paradigmas da Programação – Semestre 1 – Aula 3
Ling. C - Variáveis Uma variável não é mais do que o nome que nós damos a uma determinada posição de memória para conter um valor de um determinado tipo.
Classes & Objectos em JAVA5
Classes e objetos P. O. O. Prof. Grace.
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Linguagem técnica de programação I Java – REVISÃO
Introdução a Computação e Cálculo Numérico
Aula prática 13 Orientação a Objetos – C++ Parte 1
JAVA Orientação a Objetos
Atributos, Encapsulamento e Interface em Java
Programação I Aula 2 (Métodos)
Métodos de Construção de Software: Orientação a Objetos
Linguagem de Programação JAVA
Tipos Abstratos de Dados
Linguagem de Programação JAVA
Orientação a Objetos Parte I
Programação orientada a objectos em C++
By Ducheno Kelly Centro de Formação São Domingos.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Orientação a Objetos Parte II
PROGRAMAÇÃO ORIENTADA A OBJETOS
Tipos de Dados Operadores
Programação Orientada a Objetos - Java
Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009.
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Laboratório de Programação II Método Construtor Dados e Métodos de Objetos Prof Edivaldo - Network.
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Ferramentas para Orientação a Objetos
Aula Prática 3 Funções Monitoria Introdução à Programação.
Classes Abstratas e Interface
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação I Aula 1 Prof. Gilberto Irajá Müller Última atualização 2/3/2009.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Conceitos Básicos e Manipulação de Objetos
Modificadores Programação II.
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Orientação a Objetos Paradigma. Davi Pires Revisão Dúvidas da aula passada? –Características de Java –Compilador vs. Interpretador.
Introdução Sintaxe Básica da Linguagem JAVA
Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour ▐ Polimorfismo ▐ Exemplo ▐ Classes Abstratas.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
1 Interface (o termo) » Interface (a palavra reservada): Java estendeu o conceito de interfaces à um nível ainda mais flexível que permite construir entidades.
Strings e Arrays Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

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

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

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

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)

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

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

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

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

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

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()

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

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

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

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;

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

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...

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

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

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

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

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

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( )

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

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

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

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()

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

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[ ])

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

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);

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; }

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;

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

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.

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

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”

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.

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()); }

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)

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(); }