Vous êtes sur la page 1sur 70

Instituto Federal de Educao, Cincia e Tecnologia IFAL Coordenadoria de Informtica

Programao Orientada a Objetos


Prof. Ricardo Rubens Ricardo (arroba) ifal.edu.br

Adaptado do seguinte material

Deitel Java Como Programar


Captulo 3: Introduo a classes e objetos

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

Classes, objetos, mtodos e variveis de instncia


Classes contm um ou mais atributos:
Especificados pelas variveis de instncia. Transportados com o objeto medida que so utilizados.

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

// Fig. 3.1: GradeBook.java // Declarao de classe com um mtodo.

Resumo
GradeBook.java

public class GradeBook { boas// exibe uma mensagem de boas-vindas para o usurio GradeBook public void displayMessage() {

Imprime linha do texto na sada

System.out.println( "Welcome to the Grade Book!" ); } // fim do mtodo displayMessage

12 } // fim da classe GradeBook

Classe GradeBookTest
O Java extensvel:
Os programadores podem criar novas classes.

Expresso de criao de instncia de classe:


Palavra-chave new. Ento, nome da classe a criar e os parnteses.

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

GradeBook myGradeBook = new GradeBook();

// chama mtodo displayMessage de myGradeBook myGradeBook.displayMessage(); } // fim de main

16 } // fim da classe GradeBookTest Welcome to the Grade Book!

11

Compilando um aplicativo com mltiplas classes


Compilando mltiplas classes:
Lista cada arquivo .java separadamente, divididos por espaos. Compila com *.java para compilar todos os arquivos .java nesse diretrio.

POOB

12

Diagrama de classe UML para a classe GradeBook


Diagramas de classe UML:
Compartimento superior contm o nome da classe. Compartimento intermedirio contm atributos ou variveis de instncia da classe. Compartimento inferior contm operaes ou mtodos da classe.
Sinal de adio indica os mtodos public.

POOB

13

Diagrama de classe UML indicando que a classe GradeBook tem uma operao public displayMessage

POOB

14

Declarando um mtodo com um parmetro


Parmetros de mtodo:
Informaes adicionais passadas para um mtodo. Informaes adicionais fornecidas na chamada de mtodo com argumentos.

POOB

15

Declarando um mtodo com um parmetro (Continuao)


Mtodos Scanner:
nextLine l a prxima linha da entrada. next l a prxima palavra da entrada.

Como aprender sobre os demais mtodos?

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

13 } // fim da classe GradeBook

Chama o mtodo printf com o argumento courseName

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

Observao de engenharia de software 3.1


Normalmente, os objetos so criados com new. Uma exceo um literal de string que est entre aspas, como hello. Os literais de string so referncias a objetos String que so criados implicitamente pelo Java.

POOB

19

Diagrama de classe UML para a classe GradeBook


Diagrama de classe UML:
Parmetros especificados por nome de parmetro seguido por dois-pontos e pelo tipo de parmetro nos parnteses que seguem o nome da operao.

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

Notas sobre as declaraes Import


java.lang implicitamente importada em todo programa. Pacote-padro:
Contm classes compiladas no mesmo diretrio. Implicitamente importada para o cdigo-fonte dos outros arquivos no diretrio.

Empacota nomes desnecessrios caso sejam utilizados nomes completamente qualificados.

POOB

22

Variveis de instncia, mtodos set e get


Variveis declaradas no corpo do mtodo:
Conhecidas como variveis locais. Somente podem ser utilizadas nesse mtodo.

Variveis declaradas em uma declarao de classe:


Chamadas de campos ou variveis de instncia. Cada objeto (instncia) da classe tem uma instncia separada da varivel.

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

Mtodo set para

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

Mtodo get para courseName

28 29 30 } // fim da classe GradeBook

System.out.printf( "Welcome to the grade book for\n%s!\n", for\n%s!\n", getCourseName() ); } // fim do mtodo displayMessage

Chama o mtodo get

24

Modificadores de acesso public e private


Palavra-chave private:
Utilizada na maioria das variveis de instncia. Variveis e mtodos private so acessveis somente aos mtodos da classe em que eles so declarados. Declarar variveis de instncia como private conhecido como ocultamento de dados.

Tipo de retorno:
Indica itens retornados pelo mtodo. Declarado no cabealho do mtodo.
POOB 25

Observao de engenharia de software 3.3


Anteceda cada campo e declarao de mtodo com um modificador de acesso.
as variveis de instncia: private os mtodos: public (no todos)

POOB

26

Boa prtica de programao 3.1


Preferimos listar os campos de uma classe primeiro para que, ao ler o cdigo, voc veja os nomes e tipos das variveis antes de coloc-los em uso nos mtodos da classe. possvel listar os campos da classe em qualquer lugar na classe fora de suas declaraes de mtodo, mas sua disperso tende a resultar em um cdigo de difcil leitura.
POOB 27

Classe GradeBookTest que demonstra a classe GradeBook


Valor inicial padro:
Fornecido a todos os campos no-inicializados. Igual a null para Strings.

POOB

28

Mtodos set e get


Variveis de instncia private:
No podem ser acessadas diretamente pelos clientes do objeto. Utilize mtodos set para alterar o valor. Utilize mtodos get para recuperar o valor.

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)

Chame o mtodo get para courseName

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)

Chama o mtodo set para courseName

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.

Tipo de retorno de um mtodo:


Indicado com um dois-pontos e tipo de retorno aps os parnteses, que se seguem ao nome da operao.

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

Tipos primitivos versus tipos por referncia


Tipos no Java:
Primitivos:
boolean, byte, char, short, int, long, float, double.

Referncia (s vezes chamada tipos noprimitivos):


Objetos. Valor inicial padro de null. Utilizado para invocar os mtodos de um objeto.

POOB

35

Inicializando objetos com construtores


Construtores:
Inicializam um objeto de uma classe. O Java requer um construtor para cada classe. O Java fornecer um construtor sem argumentospadro, caso nenhum seja fornecido. Chamados quando a palavra-chave new precedida pelo nome e parnteses da classe.

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)

Constructor to initialize courseName variable courseName courseName

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

Chama o construtor para criar o primeiro objeto


GradeBook

Cria o segundo objeto

GradeBook // display initial value of courseName for each GradeBook


%s\n", System.out.printf( "gradeBook1 course name is: %s\n", gradeBook1.getCourseName() ); System.out.printf( %s\n", System.out.printf( "gradeBook2 course name is: %s\n", gradeBook2.getCourseName() ); } // end main

23 } // end class GradeBookTest gradeBook1 course name is: CS101 Introduction to Java Programming gradeBook2 course name is: CS102 Data Structures in Java

39

Dica de preveno de erro 3.1


A menos que a inicializao-padro de variveis de instncia de sua classe seja aceitvel, fornea um construtor para assegurar que as variveis de instncia da sua classe sejam adequadamente inicializadas com valores significativos quando cada novo objeto de sua classe for criado.

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

Nmeros de ponto flutuante e tipo double Nmeros de ponto flutuante:


float double
Armazenam nmeros com maior magnitude e mais detalhes (isto , mais dgitos direita do ponto de frao decimal tambm conhecido como preciso do nmero) do que as variveis float.

POOB

43

Preciso de nmero de ponto flutuante e requisitos de memria


float
Nmeros de ponto flutuante de preciso simples. Sete dgitos significativos.

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

29 30 } // fim da classe Account Account

45

Classe AccountTest para utilizar a classe Account


Especificador de formato %f:
Utilizado para gerar sada de nmeros de ponto flutuante. Posicione um decimal e um nmero entre o sinal de porcentagem e o f para impor uma preciso.

POOB

46

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

// Fig. 3.14: AccountTest.java // Cria e manipula um objeto Account. import java.util.Scanner;

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

Insere um valor double

(2 de 3)

depositAmount account1.credit( depositAmount ); // adiciona ao saldo de account1

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

Insere um valor double

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

Exibindo texto em uma caixa de dilogo


Janelas e caixas de dilogo:
Muitos aplicativos Java utilizam janelas e caixas de dilogo para exibir a sada. JOptionPane fornece caixas de dilogo prempacotadas chamadas dilogos de mensagem

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

Importa a classe JOptionPane

null, "Welcome\nto\ JOptionPane.showMessageDialog( null, "Welcome\nto\nJava" ); } // fim de main

12 } // fim da classe Dialog1

Mostra um dilogo de mensagem com texto

52

Exibindo texto em uma caixa de dilogo


Pacote javax.swing:
Contm classes para ajudar a criar interfaces grficas com o usurio (GUIs). Contm a classe JOptionPane.
Declara o mtodo static showMessageDialog para exibir um dilogo de mensagem.

POOB

53

Inserindo texto em uma caixa de dilogo


Dilogo de entrada:
Permite que o usurio insira informaes. Criado com o mtodo showInputDialog na classe JOptionPane.

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

Mostra o dilogo de entrada

20 } // fim da classe NameDialog classe

Formata uma String para gerar sada ao usurio

55

Exerccio
1.

Modifique a classe GradeBook


e) modifique o construtor para especificar dois parmetros - um para nome do curso e outro para nome do instrutor f) Crie uma classe com o mtodo principal para criar dois objetos GradeBook e testar as funcionalidades dessa classe.

2.

Exerccio 3.12 deitel.

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

Estudo de caso de engenharia de software: Identificando classes em um documento de requisitos

Comea a projetar o sistema ATM:


Analisa os substantivos simples e os substantivos compostos. Introduz diagramas de classe UML.

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

Substantivos simples e substantivos compostos no documento de requisitos


Quais requisitos para caixa de auto-atendimento (ATM) ?
Substantivos simples e substantivos compostos no documento de requisitos
banco ATM usurio cliente transao conta saldo dinheiro / fundos tela teclado dispensador de cdulas (cash dispenser) cdula de US$ 20 / dinheiro entrada de depsito envelope de depsito nmero de conta PIN banco de dados do banco pesquisa de saldo retirada/saque depsito

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

Representando uma classe na UML utilizando um diagrama de classe

POOB

62

Modelando classes (Continuao)


A UML:
Permite a supresso de atributos e operaes de classe para criar diagramas mais legveis, quando apropriado chamados de diagramas elididos. A linha slida que conecta duas classes representa uma associao.
Nmeros prximos do final de cada linha so valores de multiplicidade.

POOB

63

Diagrama de classes que mostra uma associao entre classes

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

Modelando classes (Continuao)


Diagramas de classe UML:
Losangos slidos anexados a linhas de associao indicam um relacionamento de composio. Losangos ocos indicam agregao uma forma mais fraca de composio.

POOB

66

Diagrama de classes mostrando os relacionamentos de composio

POOB

67

Diagrama de classes para o modelo do sistema ATM (saque)

POOB

68

Diagrama de classes mostrando relacionamentos de composio de uma classe Car

POOB

69

Diagrama de classes para o modelo de sistema ATM (Deposit)

POOB

70