Beruflich Dokumente
Kultur Dokumente
OBJETIVOS
O que so classes, objetos, mtodos e variveis de instncia. Como declarar uma classe e utiliz-la para criar um objeto. Como declarar mtodos em uma classe para implementar os comportamentos da classe. Como declarar variveis de instncia em uma classe para implementar os atributos da classe. Como chamar o mtodo de um objeto para fazer esse mtodo realizar sua tarefa. As diferenas entre variveis de instncia de uma classe e variveis locais de um mtodo. Como utilizar um construtor para assegurar que os dados de um objeto sejam inicializados quando o objeto for criado. As diferenas entre tipos por referncia primitivos.
POOB
Introduo
Classes Nmeros de ponto flutuante
POOB
POOB
Declarando uma classe com um mtodo e instanciando um objeto de uma classe Classe com a palavra-chave public
Armazenada em arquivo com mesmo nome da classe terminar com a extenso de nome do arquivo .java.
POOB
Classe GradeBook
A palavra-chave public um modificador de acesso. Declaraes de classe incluem:
Modificador de acesso. Palavra-chave class. Par de chaves esquerda e direita.
POOB
Class GradeBook
Declaraes de mtodo:
Palavra-chave public indica o mtodo disponvel ao pblico. Palavra-chave void indica nenhum tipo de retorno. Modificador de acesso, tipo de retorno, nome do mtodo e parnteses compem o cabealho do mtodo.
POOB
1 2 3 4 5 6 7 8 9 10 11
Resumo
GradeBook.java
public class GradeBook { boas// exibe uma mensagem de boas-vindas para o usurio GradeBook public void displayMessage() {
Classe GradeBookTest
O Java extensvel:
Os programadores podem criar novas classes.
Chamando um mtodo:
Nome de objeto, da o separador ponto (.). Depois, o nome e os parnteses do mtodo.
POOB
10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Fig. 3.2: GradeBookTest.java // Cria um objeto GradeBook e chama seu mtodo displayMessage.
Resumo
GradeBookTest.Java
public class GradeBookTest { // mtodo main inicia a execuo de programa public static void main( String args[] ) { // cria um objeto GradeBook e o atribui a
Utiliza a expresso de criao de instncia de classe para criar o objeto myGradeBook da classe GradeBook Chama o mtodo displayMessage utilizando o objeto GradeBook
11
POOB
12
POOB
13
Diagrama de classe UML indicando que a classe GradeBook tem uma operao public displayMessage
POOB
14
POOB
15
POOB
16
1 2 3 4 5 6 7 8 9 10 11 12
// Fig. 3.4: GradeBook.java // Declarao de classe com um mtodo que tem um parmetro.
Resumo
GradeBook.java
public class GradeBook { boas// exibe uma mensagem de boas-vindas para o usurio GradeBook public void displayMessage( String courseName ) { for\n%s!\n", System.out.printf( "Welcome to the grade book for\n%s!\n", courseName ); } // fim do mtodo displayMessage
17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
// Fig. 3.5: GradeBookTest.java // Create GradeBook object and pass a String to // its displayMessage method. import java.util.Scanner; // program uses Scanner public class GradeBookTest { execution // main method begins program execution public static void main( String args[] ) { // create Scanner to obtain input from command window Scanner input = new Scanner( System.in ); // create a GradeBook object and assign it to myGradeBook myGradeBook GradeBook myGradeBook = new GradeBook();
Resumo
GradeBookTest.Java
Chama o mtodo nextLine para ler uma linha de entrada Chama com um
// prompt for and input course name System.out.println( "Please enter the course name:" ); String nameOfCourse = input.nextLine(); // read a line of text displayMessage System.out.println(); // outputs a blank line
argumento
// call myGradeBook's displayMessage method // and pass nameOfCourse as an argument myGradeBook.displayMessage( nameOfCourse ); } // end main } // end class GradeBookTest
Please enter the course name: CS101 Introduction to Java Programming Welcome to the grade book for CS101 Introduction to Java Programming!
18
POOB
19
POOB
20
Diagrama de classe UML indicando que a classe GradeBook tem uma operao displayMessage com um parmetro courseName do tipo UML String.
POOB
21
POOB
22
POOB
23
1 2 3
// Fig. 3.7: GradeBook.java // Classe GradeBook que contm uma varivel de instncia courseName // e mtodos para configurar e obter seu valor.
Resumo
GradeBook.java
4 5 public class GradeBook courseName 6 { 7 GradeBook private String courseName; // nome do curos para este GradeBook 8 9 // mtodo para configurar o nome do curso 10 public void setCourseName( String name ) courseName { 11
Varivel de instncia
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
courseName = name; // armazena o nome do curso // } // fim do mtodo setCourseName // mtodo para recuperar o nome do curso public String getCourseName() { return courseName; } // fim do mtodo getCourseName // exibe uma mensagem de boas-vindas para o usurio GradeBook boaspublic void displayMessage() { // // essa nome instruo chama getCourseName para obter o do curso que esse GradeBook representa GradeBook
System.out.printf( "Welcome to the grade book for\n%s!\n", for\n%s!\n", getCourseName() ); } // fim do mtodo displayMessage
24
Tipo de retorno:
Indica itens retornados pelo mtodo. Declarado no cabealho do mtodo.
POOB 25
POOB
26
POOB
28
POOB
29
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// Fig. 3.8: GradeBookTest.java // Cria e manipula um objeto GradeBook. GradeBook. import java.util.Scanner; // programa utiliza Scanner public class GradeBookTest { // mtodo main inicia a execuo de programa main( public static void main( String args[] ) { // cria Scanner para obter entrada a partir da janela de comando Scanner input = new Scanner( System.in ); // cria um objeto GradeBook e o atribui a myGradeBook GradeBook myGradeBook = new GradeBook(); // exibe valor inicial de courseName %s\ n", System.out.printf( "Initial course name is: %s\n\n", myGradeBook.getCourseName() );
Resumo
GradeBookTest.Java (1 de 2)
30
20 21 22 23 24 25 26 27 28 29
// solicita e l o nome do curso System.out.println( "Please enter the course name:" ); String theName = input.nextLine(); // l uma linha de texto curso myGradeBook.setCourseName( theName ); // configura o nome do curso System.out.println(); // gera sada de uma linha em branco
Resumo
GradeBookTest.Java (2 de 2)
boas// exibe mensagem de boas-vindas depois de especificar nome do curso myGradeBook.displayMessage(); } // fim de main
Chama displayMessage
30 } // fim da classe GradeBookTest GradeBookTest Initial course name is: null Please enter the course name: CS101 Introduction to Java Programming Welcome to the grade book for CS101 Introduction to Java Programming!
31
Diagrama de classe UML de GradeBook com uma varivel de instncia e os mtodos set e get
Atributos:
Listado no compartimento intermedirio da classe. Nome do atributo seguido por um caractere de dois-pontos e o tipo de atributo.
POOB
32
Diagrama de classe UML indicando que a classe GradeBook tem um atributo courseName de tipo UML String e trs operaes setCourseName (com um parmetro de nome de tipo UML Strin String), String) getCourseName (retorna o tipo UML String e displayMessage.
POOB
33
Exerccio
Modifique a classe GradeBook
a) inclua a segunda varivel de instncia String que representa o nome do instrutor. b) Fornea mtodos set para alterar o nome do instrutor e get para recuper-lo. c) Crie uma classe com o mtodo principal para criar dois objetos GradeBook e testar as funcionalidades dessa classe. d) modifique o mtodo displayMessage de tal maneira que ele primeiro gera a sada da mensagem de boas-vindas e o nome do curso e depois a sada de "This course is presentend by:" seguido pelo nome do instrutor
POOB
34
POOB
35
POOB
36
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
// Fig. 3.10: GradeBook.java // Classe GradeBook com um construtor para inicializar o nome de um curso. public class GradeBook { private String courseName; // nome do curso para esse GradeBook // construtor inicializa courseName com String fornecido como argumento public GradeBook( String name ) { courseName = name; // inicializa } // fim do construtor // mtodo para configurar o nome do curso public void setCourseName( String name ) { courseName = name; // armazena o nome do curso } // fim do mtodo setCourseName // mtodo para recuperar o nome do curso public String getCourseName() { return courseName; } // fim do mtodo getCourseName
Resumo
GradeBook.java (1 de 2)
37
25 26 27 28 29 30 31 32 33 34 35 } // fim da classe GradeBook boas// exibe uma mensagem de boas-vindas para o usurio GradeBook public void displayMessage() { // essa instruo chama getCourseName para obter o // nome do curso que esse GradeBook representa System.out.printf( for\n%s!\n", System.out.printf( "Welcome to the grade book for\n%s!\n", getCourseName() ); mtodo } // fim do mtodo displayMessage
Resumo
GradeBook.java (2 de 2)
38
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
// Fig. 3.11: GradeBookTest.java // GradeBook constructor used to specify the course name at the // time each GradeBook object is created. public class GradeBookTest { // main method begins program execution static public static void main( String args[] ) { // create GradeBook object GradeBook gradeBook1 = new GradeBook( "CS101 Introduction to Java Programming" ); GradeBook gradeBook2 = new GradeBook( "CS102 Data Structures in Java" );
Resumo
GradeBookTest.Java
23 } // end class GradeBookTest gradeBook1 course name is: CS101 Introduction to Java Programming gradeBook2 course name is: CS102 Data Structures in Java
39
POOB
40
Adicionando o construtor ao diagrama de classe UML da classe GradeBookTest Diagrama de classe UML:
A UML modela construtores no terceiro compartimento de uma classe. A UML coloca a palavra <<constructor>> antes do nome do construtor. habitual listar construtores antes de outras operaes no terceiro compartimento.
POOB
41
Diagrama de classe UML indicando que a classe GradeBook tem um construtor que tem um parmetro name do tipo UML String.
POOB
42
POOB
43
double
Nmeros de ponto flutuante de dupla preciso. Quinze dgitos significativos.
POOB
44
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
// Fig. 3.13: Account.java // Classe Account com um construtor para // inicializar a varivel de instncia balance. public class Account { private double balance; // varivel de instncia que armazena o saldo // construtor public Account( double initialBalance ) { // valida que initialBalance maior que 0,0; // se no, o saldo inicializado como o valor padro 0.0 if ( initialBalance > 0.0 ) balance balance = initialBalance; } // fim do construtor Account // credita (adiciona) uma quantia conta public void credit( double amount ) { balance = balance + amount; // adiciona amount ao balance } // end method credit // retorna o saldo da conta public double getBalance() { return balance; // fornece o valor de balance ao mtodo chamador } // fim do mtodo getBalance
Resumo
Account.java Varivel double balance
45
POOB
46
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Resumo
AccountTest.Java (1 de 3)
public class AccountTest { // mtodo main inicia a execuo do aplicativo Java public static void main( String args[] ) { Account account1 = new Account( 50.00 ); // cria o objeto Account Account account2 = new Account( -7.53 ); // cria o objeto Account
// exibe saldo inicial de cada objeto System.out.printf( "account1 balance: $%.2f\n", $%.2f n", %.2f\ account1.getBalance() ); $%.2f %.2f\ n", System.out.printf( "account2 balance: $%.2f\n\n", account2.getBalance() );
47
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
// cria Scanner para obter entrada a partir da janela de comando Scanner input = new Scanner( System.in ); double depositAmount; // quantia de depsito lida a partir do usurio
Resumo
AccountTest.java
deposit System.out.print( "Enter deposit amount for account1: " ); // prompt depositAmount = input.nextDouble(); // obtm a entrada do usurio balance\ n", System.out.printf( "\nadding %.2f to account1 balance\n\n", depositAmount );
(2 de 3)
// display balances $%.2f n", %.2f\ System.out.printf( "account1 balance: $%.2f\n", account1.getBalance() ); System.out.printf( "account2 balance: $%.2f\n\n", $%.2f %.2f\ n", account2.getBalance() account2.getBalance() );
System.out.print( "Enter deposit amount for account2: " ); // prompt depositAmount = input.nextDouble(); // obtm a entrada do usurio balance\ n", System.out.printf( "\nadding %.2f to account2 balance\n\n", depositAmount ); account2.credit( depositAmount ); // adiciona ao saldo de account2
48
41 42 43 44 45 46 47
// exibe os saldos $%.2f n", %.2f\ System.out.printf( "account1 balance: $%.2f\n", account1.getBalance() ); $%.2f n", %.2f\ System.out.printf( "account2 balance: $%.2f\n", account2.getBalance() ); } // fim de main
Resumo
AccountTest.Java
48 } // fim da classe AccountTest account1 balance: $50.00 account2 balance: $0.00 Enter deposit amount for account1: 25.53 adding 25.53 to account1 balance account1 balance: $75.53 account2 balance: $0.00 123.45 Enter deposit amount for account2: 123.45 adding 123.45 to account2 balance account1 balance: $75.53 account2 balance: $123.45
(3 de 3)
Gera a sada de um valor double
49
Diagrama da classe UML para indicar que a classe Account tem um atributo private balance do tipo UML Double, Double um construtor (com um parmetro do tipo UML Double) Double e duas operaes public credit (com um parmetro amount do tipo UML Double e getBalance Double) (retorna o tipo UML Double Double).
POOB
50
POOB
51
1 2 3 4 5 6 7 8 9 10 11
// Fig. 3.17: Dialog1.java dilogo. // Imprimindo mltiplas linhas na caixa de dilogo. importa classe import javax.swing.JOptionPane; // importa a classe JOptionPane
Resumo
Dialog1.java
public class Dialog1 { public static void main( String args[] ) { // exibe um dilogo com a mensagem
52
POOB
53
POOB
54
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// Fig. 3.18: NameDialog.java // Entrada bsica com uma caixa de dilogo. import javax.swing.JOptionPane; public class NameDialog { public static void main( String args[] ) { seu // pede para o usurio inserir seu nome String name = JOptionPane.showInputDialog( "What is your name?" ); // cria a mensagem String message = String.format( "Welcome, %s, to Java Programming!", name ); Programming!", // exibe a mensagem para cumprimentar o usurio pelo nome null, JOptionPane.showMessageDialog( null, message ); } // fim de main
Resumo
NameDialog.Java
55
Exerccio
1.
2.
56
Leitura e Exerccios
Captulo 3, Deitel (Java: Como Programar) Responder 7 exerccios do captulo 3 (Deitel entre 3.5 e 3.15) Miniteste prxima aula!
POOB
57
POOB
58
Identificando as classes em um sistema Principais substantivos simples e substantivos compostos em um documento de requisitos:
Alguns so atributos de outras classes. Alguns no correspondem a partes do sistema. Alguns so classes.
Classes a ser representadas por diagramas de classe UML.
POOB
59
POOB
60
Modelando classes
Diagramas de classe UML:
Compartimento superior contm o nome da classe centralizada horizontalmente em negrito. Compartimento intermedirio contm atributos da classe ou variveis de instncia. Compartimento inferior contm as operaes ou mtodos da classe.
POOB
61
POOB
62
POOB
63
POOB
64
Tipos de multiplicidade
Smbolo
0 1 m 0..1 m, n m..n * 0..* 1..*
Significado
Nenhum Um Um valor de inteiro Zero ou um m ou n Pelo menos m, mas no mais do que n Qualquer inteiro no-negativo (zero ou mais) Zero ou mais (idntico a *) Um ou mais
POOB
65
POOB
66
POOB
67
POOB
68
POOB
69
POOB
70