Orientação a Objetos e Java

28
Orientação a Objetos e Orientação a Objetos e Java Java Antonio Mendes da Silva Filho Antonio Mendes da Silva Filho

description

Orientação a Objetos e Java. Antonio Mendes da Silva Filho. Objetos, classes, métodos e atributos. Programação Orientada a Objetos. Foco nos dados (objetos) do sistema, não nas funções Estruturação do programa é baseada nos dados, não nas funções As funções mudam mais do que os dados. - PowerPoint PPT Presentation

Transcript of Orientação a Objetos e Java

Page 1: Orientação a Objetos e Java

Orientação a Objetos Orientação a Objetos e Javae Java

Antonio Mendes da Silva FilhoAntonio Mendes da Silva Filho

Page 2: Orientação a Objetos e Java

Objetos, classes, métodos e Objetos, classes, métodos e atributosatributos

Page 3: Orientação a Objetos e Java

Programação Orientada a Programação Orientada a ObjetosObjetos

Foco nos dados (objetos) do sistema, Foco nos dados (objetos) do sistema, não nas funçõesnão nas funções

Estruturação do programa é baseada Estruturação do programa é baseada nos dados, não nas funçõesnos dados, não nas funções

As funções mudam mais do que os As funções mudam mais do que os dadosdados

Page 4: Orientação a Objetos e Java

Objeto Conta BancáriaObjeto Conta Bancária

Número Saldo

21.342-7 875,32

Creditarcreditar

debitar

Page 5: Orientação a Objetos e Java

Estados do Objeto ContaEstados do Objeto Conta

creditar(20)

Número Saldo

21.342-7 875,32

Creditarcreditar

debitar

Número Saldo

21.342-7 895,32

Creditarcreditar

debitar

Page 6: Orientação a Objetos e Java

ObjetosObjetos Objetos Objetos comportamento + comportamento +

característicascaracterísticas métodos + atributosmétodos + atributos estado encapsuladoestado encapsulado

Page 7: Orientação a Objetos e Java

ClassesClasses

ClassesClasses agrupamento de objetos do agrupamento de objetos do

mesmo tipomesmo tipo

Animais

MamíferosInvertebradosMacaco Cachorro

Jacaré

Gafanhoto

Page 8: Orientação a Objetos e Java

Definindo Classes em JavaDefinindo Classes em Java

public class NomeDaClasse { CorpoDaClasse }

O corpo de uma classe pode conter • atributos• métodos• construtores (inicializadores)• outras classes...

Page 9: Orientação a Objetos e Java

Estrutura mínima de um Estrutura mínima de um programa em Javaprograma em Java

public class <nome> {public class <nome> { public static void main (String[] args) {public static void main (String[] args) { <declarações><declarações> <comandos><comandos> }}}}

Onde, Onde, mainmain: método por onde se inicia a execução: método por onde se inicia a execução publicpublic: parâmetro de acesso: parâmetro de acesso staticstatic: indica que : indica que mainmain se aplica à classe se aplica à classe voidvoid: indica que : indica que mainmain não retorna um valor não retorna um valor

Page 10: Orientação a Objetos e Java

ExemploExemplo

public class LeImprime {public class LeImprime { /** Lê e imprime um string *//** Lê e imprime um string */ public static void main(String[] args) {public static void main(String[] args) { String nome;String nome; nome = Util.readStr();nome = Util.readStr(); System.out.println(nome);System.out.println(nome); }}}}

Page 11: Orientação a Objetos e Java

Definindo Atributos em Definindo Atributos em JavaJava

cada atributo tem um tipo específico que cada atributo tem um tipo específico que caracteriza as propriedades dos objetos da caracteriza as propriedades dos objetos da classeclasse

intint e e StringString denotam os tipos cujos elementos denotam os tipos cujos elementos são inteiros e stringssão inteiros e strings

public class Livro { private int anoDePublicacao; private int numeroDePaginas; private String titulo; ...}

Page 12: Orientação a Objetos e Java

Tipos em JavaTipos em Java PrimitivosPrimitivos

– char char – intint– booleanboolean– doubledouble– ......

ReferênciaReferência– classes (classes (StringString, , ObjectObject, , LivroLivro, , ContaConta, etc.), etc.)

– interfacesinterfaces– arraysarrays

Os elementos de um tipo primitivo são valores, enquanto os elementos de um tipo referência são (referências para) objetos!

Page 13: Orientação a Objetos e Java

Strings (Strings (StringString)) Não é um tipo primitivo e sim uma Não é um tipo primitivo e sim uma

classeclasse Literais: Literais: “” “a” “POLI \n UPE \n”“” “a” “POLI \n UPE \n” Operadores: Operadores: ++ (concatenação) (concatenação)ex.: ex.: “maio ” + “ de ” + 99“maio ” + “ de ” + 99 = = “maio de 99”“maio de 99” Note a conversão de inteiro para stringNote a conversão de inteiro para string Há uma conversão implícita para todos os Há uma conversão implícita para todos os

tipos primitivostipos primitivos

Page 14: Orientação a Objetos e Java

Mais operadores sobre stringsMais operadores sobre strings

Comparação (igualdade) de dois strings Comparação (igualdade) de dois strings aa e e bb

String a ...String a ... String b ...String b ... a.equals(b) a.equals(b) ouou b.equals(a) b.equals(a) Tamanho de um string Tamanho de um string aa a.length()a.length()

Page 15: Orientação a Objetos e Java

Information HidingInformation Hiding

A palavra reservada private indica que os atributos só podem ser acessados (isto é, lidos ou modificados) pelas operações da classe correspondente

public class Livro { private int anoDePublicacao; ...}

Page 16: Orientação a Objetos e Java

Information Hiding e JavaInformation Hiding e Java Java não obriga o uso de Java não obriga o uso de privateprivate, ,

mas vários autores consideram isto mas vários autores consideram isto uma pré-condição para programação uma pré-condição para programação orientada a objetosorientada a objetos

O bug do ano 2000 e O bug do ano 2000 e privateprivate...... Grande impacto em extensibilidadeGrande impacto em extensibilidade Usem Usem privateprivate!!

Page 17: Orientação a Objetos e Java

Definindo Atributos em Definindo Atributos em JavaJava

public class Pessoa { private int anoDeNascimento; private String nome, sobrenome; private boolean casado = false; ...}

vários atributos de um mesmo tipo podem vários atributos de um mesmo tipo podem ser declarados conjuntamenteser declarados conjuntamente

podemos especificar que um atributo deve podemos especificar que um atributo deve ser inicializado com um valor específicoser inicializado com um valor específico

Page 18: Orientação a Objetos e Java

Definindo Métodos em Definindo Métodos em JavaJava

public class Conta { private String numero; private double saldo;

public void creditar(double valor) { saldo = saldo + valor; } ... }

Um método é uma operação que realiza ações e modifica os valores dos atributos do objeto

responsável pela sua execução

Page 19: Orientação a Objetos e Java

Definindo Métodos em Definindo Métodos em JavaJava

public class Conta { ...

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

corpo do método

parâmetros do método

tipo de retorno

Por quê o método debitar não tem como Parâmetro o número da conta?

Page 20: Orientação a Objetos e Java

Definindo Métodos em JavaDefinindo Métodos em Java

O tipo do valor a ser retornado pelo métodoO tipo do valor a ser retornado pelo método Nome do método Nome do método Lista, possivelmente vazia, indicando o tipo Lista, possivelmente vazia, indicando o tipo

e o nome dos argumentos a serem e o nome dos argumentos a serem recebidos pelo métodorecebidos pelo método

Usa-se void para indicar que o método não retorna nenhum valor, apenas altera

os valores dos atributos de um objeto

Page 21: Orientação a Objetos e Java

Definindo Métodos em Definindo Métodos em JavaJava

public class Conta { private String numero; private double saldo; public String getNumero() { return numero; } public double getSaldo() { return saldo; } ...}

Os métodos que retornam valores comoresultado usam o comando return

Page 22: Orientação a Objetos e Java

O Corpo do MétodoO Corpo do Método

Comandos que determinam as ações Comandos que determinam as ações do métododo método

Estes comandos podemEstes comandos podem– realizar simples atualizações dos realizar simples atualizações dos

atributos de um objetoatributos de um objeto– retornar valoresretornar valores– executar ações mais complexas como executar ações mais complexas como

se comunicar com outros objetosse comunicar com outros objetos

Page 23: Orientação a Objetos e Java

Comunicação entre Comunicação entre objetosobjetos

Os objetos se comunicam para realizar tarefasOs objetos se comunicam para realizar tarefas A comunicação é feita através da troca de A comunicação é feita através da troca de

mensagens ou chamada de métodosmensagens ou chamada de métodos Cada mensagem é uma requisição para que Cada mensagem é uma requisição para que

um objeto execute uma operação específicaum objeto execute uma operação específica

conta.creditar(45.30)

variável contendoreferência para objeto

nome do método a serexecutado

Page 24: Orientação a Objetos e Java

Imprimindo na telaImprimindo na telapublic class Conta { private String numero; private double saldo; public void imprimirSaldo() { System.out.println("Conta: " + numero + " Saldo: R$" + saldo); } ...}

concatenação de String e conversão de tipos

A tela do computador é representada em Java por um objeto especial, armazenado na variável

System.out

Page 25: Orientação a Objetos e Java

Imprimindo na telaImprimindo na tela

O código de impressão na tela faz parte daGUI do sistema

e não deve ser misturado aocódigo inerente ao negócio, como acontece

no exemplo anterior

Page 26: Orientação a Objetos e Java

Exemplo – Programa de adiçãoExemplo – Programa de adiçãoimport javax.swing.JOptionPane; // import class JOptionPaneimport javax.swing.JOptionPane; // import class JOptionPane

public class Addition {public class Addition { public static void main( String args[] )public static void main( String args[] ) {{ String firstNumber, // first string entered by userString firstNumber, // first string entered by user secondNumber; // second string entered by usersecondNumber; // second string entered by user int number1, // first number to addint number1, // first number to add number2, // second number to addnumber2, // second number to add sum; // sum of number1 and number2sum; // sum of number1 and number2

// read in first number from user as a string// read in first number from user as a string firstNumber =firstNumber = JOptionPane.showInputDialog( "Enter first integer" ); JOptionPane.showInputDialog( "Enter first integer" );

// J2SE has JOptionPane class that allows you to display a dialog box containing information// J2SE has JOptionPane class that allows you to display a dialog box containing information// JOptionPane is defined in the package called javax.swing. A package is referred to as a // JOptionPane is defined in the package called javax.swing. A package is referred to as a

// Java class library or Java API.// Java class library or Java API.

secondNumber =secondNumber = // read in second number from user as a string// read in second number from user as a string JOptionPane.showInputDialog( "Enter second integer" );JOptionPane.showInputDialog( "Enter second integer" );

number1 = Integer.parseInt( firstNumber ); number1 = Integer.parseInt( firstNumber ); // convert numbers from type String to type int// convert numbers from type String to type int number2 = Integer.parseInt( secondNumber );number2 = Integer.parseInt( secondNumber ); sum = number1 + number2;sum = number1 + number2; // add the numbers // add the numbers

// display the results// display the results JOptionPane.showMessageDialog(JOptionPane.showMessageDialog( null, "The sum is " + sum, "Results",null, "The sum is " + sum, "Results", JOptionPane.PLAIN_MESSAGE ); // 4th argument displays a message with no icon JOptionPane.PLAIN_MESSAGE ); // 4th argument displays a message with no icon System.exit( 0 ); // terminate the programSystem.exit( 0 ); // terminate the program }}}}

Page 27: Orientação a Objetos e Java

ExercícioExercício Utilizando apenas os conceitos ilustrados até Utilizando apenas os conceitos ilustrados até

aqui, escreva um código em Java, definindo aqui, escreva um código em Java, definindo uma classe chamada Media a fim de que o uma classe chamada Media a fim de que o programa leia 10 (dez) valores programa leia 10 (dez) valores (correspondente a notas de estudantes) do (correspondente a notas de estudantes) do tipo inteiro e calcule a média das notas e tipo inteiro e calcule a média das notas e depois mostre na tela o valor da média depois mostre na tela o valor da média obtida.obtida.

DicaDica: Observe o programa exemplo anterior : Observe o programa exemplo anterior que permite fazer a adição de números.que permite fazer a adição de números.

Page 28: Orientação a Objetos e Java

Sugestões de leituraSugestões de leitura K. Arnold and J. Gosling, The Java K. Arnold and J. Gosling, The Java

Programming Language, Addison-Programming Language, Addison-Wesley, 1996.Wesley, 1996.

H. M. Deitel and P. J. Deitel, Java – H. M. Deitel and P. J. Deitel, Java – How to Program, Prentice Hall, 3rd How to Program, Prentice Hall, 3rd Edition, 1999.Edition, 1999.

http://java.sun.comhttp://java.sun.com