Você está na página 1de 91

3

Introdução
a classes
e objetos

Copyright © 2006 by Pearson Education


OBJETIVOS
Neste capítulo, você aprenderá:
 O que são classes, objetos, funções-membro e membros de
dados.
 A definir uma classe e utilizá-la para criar um objeto.
 A definir funções-membro em uma classe para implementar os
comportamentos da classe.
 A declarar membros de dados em uma classe para implementar
os atributos da classe.
 A chamar uma função-membro de um objeto para fazê-la realizar
sua tarefa.
 As diferenças entre membros de dados de uma classe e as
variáveis locais de uma função.
 Como utilizar um construtor para assegurar que os dados de um
objeto sejam inicializados quando o objeto for criado.
 Como projetar uma classe para separar sua interface de sua
implementação e estimular a reutilização.
2
Copyright © 2006 by Pearson Education
3.1 Introdução

• Programas do Capítulo 2
– Todas as instruções estavam localizadas na função main.
• Em geral
– Os programas consistirão
• Na função main e
• Em uma ou mais classes
– Cada uma conterá membros de dados e funções-
membro.

3
Copyright © 2006 by Pearson Education
3.2 Classes, objetos, funções-membro e
membros de dados
• Revisão de classes: exemplo do carro
– As funções descrevem os mecanismos responsáveis pela
execução de tarefas; a aceleração, por exemplo.
• Tarefas complexas são ocultadas do usuário. Por exemplo, o
motorista pode usar o pedal do acelerador, mas não precisa
saber como se dá o processo de aceleração.
– Para ser usadas, as classes devem ser definidas antes. E os
carros, para ser dirigidos, também devem ser construídos
antes.
– Assim como muitos objetos de carro podem ser criados na
mesma classe, muitos carros podem ser construídos com o
mesmo desenho de engenharia.

4
Copyright © 2006 by Pearson Education
3.2 Classes, objetos, funções-membro e
membros de dados (cont.)
• Revisão de classes: exemplo do carro (cont.)
– As chamadas de função-membro enviam mensagens a um
objeto para executar determinadas tarefas, do mesmo
modo que pisar do acelerador envia uma mensagem ao
carro para que acelere.
– Objetos e carros possuem atributos, como cor e
quilômetros rodados.

5
Copyright © 2006 by Pearson Education
3.3 Visão geral dos exemplos do capítulo
• Sete exemplos simples
– Exemplos usados para construir uma classe GradeBook.
• Tópicos cobertos:
– Funções-membro
– Membros de dados
– Clientes de uma classe
• Outras classes ou funções que chamam as funções-membro
dos objetos dessa classe.
– Separando a interface da implementação
– Validação de dados
• Garante que os dados em um objeto estejam em um
determinado formato ou intervalo.

6
Copyright © 2006 by Pearson Education
3.4 Definindo uma classe com uma
função-membro
• Definição de classe
– Indica ao compilador que funções-membro e membros de
dados pertencem à classe.
– Palavra-chave class seguida do nome da classe.
– O corpo da classe é colocado entre chaves ({}).
• Especifica membros de dados e funções-membro.
• Especificador de acesso public:
– Indica que uma função-membro ou membro de dados é
acessível a outras funções e funções-membro de outras
classes.

7
Copyright © 2006 by Pearson Education
Resumo
fig03_01.cpp

Início da definição da classe


GradeBook.

Início do corpo da classe.

Especificador de acesso public;


disponibiliza membros ao público.

A função-membro displayMessage
não retorna nada.

Fim do corpo da classe.

O operador ponto é usado para chamar


funções-membro de GradeBook.

8
Copyright © 2006 by Pearson Education
Erro comum de programação 3.1

Esquecer do ponto-e-vírgula no fim de uma definição de


classe é um erro de sintaxe.

9
Copyright © 2006 by Pearson Education
3.4 Definindo uma classe com uma
função-membro (cont.)
• Definição de função-membro
– Tipo de retorno de uma função
• Indica o tipo de valor retornado pela função quando ela
finaliza uma tarefa.
• void indica que a função não retorna nenhum valor.
– Os nomes de função devem ser um identificador válido.
– Os parênteses após o nome da função indicam que ela é
uma função.
– O corpo da função contém instruções que executam a
tarefa da função.
• Encontra-se entre chaves ({}).

10
Copyright © 2006 by Pearson Education
Erro comum de programação 3.2

Retornar um valor de uma função cujo tipo de


retorno foi declarado como void é um erro de
compilação.

11
Copyright © 2006 by Pearson Education
Erro comum de programação 3.3

Definir uma função dentro de uma outra função é um


erro de sintaxe.

12
Copyright © 2006 by Pearson Education
3.4 Definindo uma classe com uma
função-membro (cont.)
• Usando uma classe
– Uma classe é um tipo definido pelo usuário (ou um tipo
definido pelo programador).
• Pode ser utilizada para criar objetos.
– Variáveis do tipo da classe
• C++ é uma linguagem extensível.
– Operador ponto (.)
• É usado para acessar membros de dados e funções-membro
de um objeto.
• Exemplo
– myGradeBook.displayMessage()
• Chama a função-membro displayMessage do objeto
myGradeBook de GradeBook.
13
Copyright © 2006 by Pearson Education
Fig. 3.2 | Diagrama de classes UML indicando que a classe GradeBook tem uma
operação displayMessage pública.

14
Copyright © 2006 by Pearson Education
3.4 Definindo uma classe com uma
função-membro (cont.)

• Diagrama de classes
– Um retângulo com três compartimentos
• O compartimento superior contém o nome da classe.
• O compartimento do meio contém os atributos da classe.
• O compartimento inferior contém as operações da classe.
– Quando há um sinal (+) na frente de uma operação, isso
indica que ela é pública.

15
Copyright © 2006 by Pearson Education
3.5 Definindo uma função-membro com
um parâmetro
• Parâmetro(s) de função
– Informação necessária para que uma função execute sua
tarefa.
• Argumento(s) de função
– Valores fornecidos por uma chamada de função a cada
parâmetro da função.
• Os valores de argumento são copiados nos parâmetros de
função.

16
Copyright © 2006 by Pearson Education
3.5 Definindo uma função-membro com
um parâmetro (cont.)
• Uma string
– Representa uma string de caracteres.
– É um objeto da classe std::string da C++ Standard
Library.
• É definida no arquivo de cabeçalho <string>.
• Função de biblioteca getline
– Usada para recuperar uma entrada até que uma nova
linha seja encontrada.
– Exemplo
• getline( cin, nameOfCourse );
– Gera uma linha da entrada-padrão na string object
nameOfCourse.
17
Copyright © 2006 by Pearson Education
Resumo
fig03_03.cpp
(1 de 2)

Inclui a definição da classe


string.

Parâmetro de função-membro.

O parâmetro de função é
usado como uma variável.

18
Copyright © 2006 by Pearson Education
Resumo
fig03_03.cpp
(2 de 2)

Passando um
argumento à função-
membro.

19
Copyright © 2006 by Pearson Education
3.5 Definindo uma função-membro com
um parâmetro (cont.)
• Lista de parâmetros
– Informações adicionais necessárias a uma função.
– Encontra-se entre parênteses após o nome da função.
– A função pode ter qualquer número de parâmetros.
• Os parâmetros são separados por vírgula.
– O número, ordem e tipo de argumento em uma chamada
de função deve corresponder ao número, ordem e tipo de
parâmetro na lista de parâmetros da função chamada.
– Modelada em UML
• Nome do parâmetro, seguido de dois-pontos e do tipo de
parâmetro entre os parênteses da função-membro.

20
Copyright © 2006 by Pearson Education
Erro comum de programação 3.4

Colocar um ponto-e-vírgula após o parêntese direito que


envolve a lista de parâmetros de uma definição de função
é um erro de sintaxe.

21
Copyright © 2006 by Pearson Education
Erro comum de programação 3.5

Definir um parâmetro de função novamente como uma


variável local na função é um erro de compilação.

22
Copyright © 2006 by Pearson Education
Boa prática de programação 3.1

Para evitar ambigüidade, não utilize os mesmos


nomes para os argumentos passados para uma função
e os parâmetros correspondentes na definição de
função.

23
Copyright © 2006 by Pearson Education
Boa prática de programação 3.2

Escolher nomes significativos para funções e parâmetros


torna os programas mais legíveis e ajuda a evitar uma
quantidade excessiva de comentários.

24
Copyright © 2006 by Pearson Education
Fig. 3.4 | Diagrama de classes UML indicando que a classe GradeBook tem uma
operação displayMessage com um parâmetro courseName do
tipo UML String.
25
Copyright © 2006 by Pearson Education
3.6 Membros de dados, funções set e
funções get
• Variáveis locais
– Variáveis declaradas no corpo de uma definição de função.
• Não podem ser utilizadas fora do corpo dessa função.
– Quando uma função termina
• Os valores das respectivas variáveis locais são perdidos.
• Atributos
– Existem por toda a vida do objeto.
– São representados como membros de dados.
• Variáveis em uma definição de classe
– Todo objeto de classe mantém sua própria cópia de
atributos.

26
Copyright © 2006 by Pearson Education
Resumo
fig03_05.cpp
(1 de 3)

A função set modifica


dados private.

27
Copyright © 2006 by Pearson Education
Resumo
fig03_05.cpp
(2 de 3)

A função get acessa


dados private.

As funções set e get são usadas,


mesmo dentro da classe.

Os membros private são acessíveis


apenas a funções-membro da classe.

28
Copyright © 2006 by Pearson Education
Resumo
fig03_05.cpp
(3 de 3)

Acessando dados
private
externamente à
definição de classe.

Modificando dados private


externamente à definição de classe.

29
Copyright © 2006 by Pearson Education
Boa prática de programação 3.3

Coloque uma linha em branco entre definições de


função-membro para melhorar a legibilidade do
programa.

30
Copyright © 2006 by Pearson Education
3.6 Membros de dados, funções set e
funções get (cont.)
• Especificador de acesso private
– Torna um membro de dados ou uma função-membro
acessível apenas a funções-membro da classe.
– private é o acesso-padrão de membros de classe.
– Oculta dados.
• Retornando um valor de uma função
– Uma função que especifica um tipo de retorno diferente de
void.
• Retorna um valor à sua função de chamada.

31
Copyright © 2006 by Pearson Education
Observação de engenharia de
software 3.1
Como regra geral, os membros de dados devem ser
declarados private e as funções-membro devem ser
declaradas public. (Veremos que é apropriado
declarar certas funções-membro private se elas
precisarem ser acessadas somente por outras funções-
membro da classe.)

32
Copyright © 2006 by Pearson Education
Erro comum de programação 3.6

Uma tentativa de uma função que não seja um membro


de uma classe particular (ou um friend dessa classe,
como veremos no Capítulo 10) de acessar um membro
private dessa classe é um erro de compilação.

33
Copyright © 2006 by Pearson Education
Boa prática de programação 3.4

Apesar de os especificadores de acesso public e


private poderem ser repetidos e combinados,
relacione todos os membros public de uma classe
primeiro em um grupo e, então, relacione todos os
membros private em outro grupo. Isso chama a
atenção do cliente para a interface public da classe,
e não para a implementação da classe.

34
Copyright © 2006 by Pearson Education
Boa prática de programação 3.5

Se escolher relacionar os membros private primeiro em


uma definição de classe, utilize o especificador de acesso
private explicitamente, apesar de private ser
assumido por padrão. Isso torna o programa mais claro.

35
Copyright © 2006 by Pearson Education
Observação de engenharia de
software 3.2
Aprenderemos no Capítulo 10, “Classes: Um exame mais
profundo, parte 2”, que funções e classes declaradas por
uma classe como friends podem acessar os membros
private da classe.

36
Copyright © 2006 by Pearson Education
Dica de prevenção de erro 3.1

Tornar os membros de dados de uma classe private e


as funções-membro da classe public facilita a
depuração porque os problemas com manipulação de
dados são localizados para as funções-membro da classe
ou para os friends da classe.

37
Copyright © 2006 by Pearson Education
Erro comum de programação 3.7

Esquecer de retornar um valor de uma função que


supostamente deve retornar um valor é um erro de
compilação.

38
Copyright © 2006 by Pearson Education
3.6 Membros de dados, funções set e
funções get (cont.)
• Engenharia de software com funções set e get
– Funções-membro public que permitem a clientes de uma
classe atribuir ou obter valores de membros de dados
private.
– As funções set às vezes são chamadas de modificadoras e as
funções get às vezes são chamadas de funções de acesso.
– Permite que o criador da classe controle a forma como os
clientes acessam dados private.
– Deve também ser utilizada por outras funções-membro da
mesma classe.

39
Copyright © 2006 by Pearson Education
Boa prática de programação 3.6

Tente sempre localizar os efeitos de alterações em


membros de dados de uma classe acessando e
manipulando os membros de dados por meio de suas
funções get e set. Alterações no nome de um membro de
dados ou tipo de dados utilizado para armazenar um
membro de dados afetam então apenas as funções get e
set correspondentes, mas não os chamadores dessas
funções.

40
Copyright © 2006 by Pearson Education
Observação de engenharia de
software 3.3
É importante escrever programas compreensíveis e fáceis
de manter. A mudança é a regra, e não a exceção. Os
programadores têm de saber de antemão que seu código
será modificado.

41
Copyright © 2006 by Pearson Education
Observação de engenharia de
software 3.4
O designer de classes não precisa fornecer as funções get
e set para cada item de dados private; essas
capacidades devem ser fornecidas somente quando
apropriado. Quando um serviço for útil ao código-
cliente, em geral deve ser fornecido na interface
public da classe.

42
Copyright © 2006 by Pearson Education
3.6 Membros de dados, funções set e
funções get (cont.)
• Diagrama UML
– Indicando o tipo de retorno de uma operação
• Insira dois-pontos e o tipo de retorno após os parênteses que
se seguem ao nome da operação.
– O sinal de menos é utilizado para indicar membros
private.

43
Copyright © 2006 by Pearson Education
Fig. 3.6 | Diagrama de classes UML para a classe GradeBook com um atributo privado
courseName e operações públicas setCourseName,
getCourseName e displayMessage.
44
Copyright © 2006 by Pearson Education
3.7 Inicializando objetos com
construtores
• Construtores
– As funções são utilizadas para inicializar dados de um
objeto no momento em que esse objeto é criado.
• Uma chamada torna-se implícita quando um objeto é criado.
• Os construtores devem ser definidos com o mesmo nome da
classe.
• Não podem retornar valores.
– Nem mesmo void.
– O construtor-padrão não tem nenhum parâmetro.
• O compilador fornecerá um quando uma determinada classe
não incluir explicitamente um construtor.
– O construtor-padrão do compilador chama apenas
construtores de membros de dados que são objetos de
classe.
45
Copyright © 2006 by Pearson Education
Resumo
fig03_07.cpp
(1 de 2)

O construtor tem o mesmo


nome da classe e não retorna
nenhum valor.

Inicializa membro de dados.

46
Copyright © 2006 by Pearson Education
Resumo
fig03_07.cpp
(2 de 2)

Quando se criam objetos, o construtor


é chamado implicitamente.

47
Copyright © 2006 by Pearson Education
Dica de prevenção de erro 3.2

A menos que nenhuma inicialização de membros de


dados da classe seja necessária (quase nunca), forneça
um construtor para assegurar que os membros de dados
da classe sejam inicializados com valores significativos
quando cada novo objeto da classe for criado.

48
Copyright © 2006 by Pearson Education
Observação de engenharia de
software 3.5
Os membros de dados podem ser inicializados em um
construtor da classe ou seus valores podem ser
configurados depois que o objeto for criado. Entretanto,
é uma boa prática de engenharia de software assegurar
que um objeto seja completamente inicializado antes de
o código-cliente invocar as funções-membro do objeto.
Em geral, você não deve contar com o código-cliente
para assegurar que um objeto seja inicializado
adequadamente.

49
Copyright © 2006 by Pearson Education
3.7 Inicializando objetos com
construtores (cont.)
• Construtores em um diagrama de classes UML
– Aparecem no terceiro compartimento, com operações.
– Para distinguir um construtor das operações de uma classe
• O UML insere a palavra ‘constructor’ entre aspas francesas
após o nome do construtor.
– <<constructor>>
– Em geral, são colocados antes de outras operações.

50
Copyright © 2006 by Pearson Education
Fig. 3.8 | Diagrama de classes UML indicando que a classe GradeBook tem um
construtor com um parâmetro name de tipo UML String.

51
Copyright © 2006 by Pearson Education
3.8 Colocando uma classe em um
arquivo separado para reusabilidade
• O arquivo .cpp é conhecido como um arquivo de
código-fonte.
• Arquivos de cabeçalho
– Arquivos separados nos quais são colocadas as definições
de classe.
• Permitem que o compilador reconheça as classes quando
usadas em outros lugares.
– Em geral, usam a extensão de nome de arquivo.h
• Arquivos de driver
– Programa usado para testar software (como classes).
– Contém uma função main para que possa ser executado.

52
Copyright © 2006 by Pearson Education
Resumo
fig03_09.cpp
(1 de 2)

A definição de classe fica


no arquivo de cabeçalho.

53
Copyright © 2006 by Pearson Education
Resumo
fig03_07.cpp
(2 de 2)

54
Copyright © 2006 by Pearson Education
Resumo
fig03_10.cpp

Incluir o arquivo de
cabeçalho faz com que a
definição de classe seja
copiada no arquivo.

55
Copyright © 2006 by Pearson Education
3.8 Colocando uma classe em um arquivo
separado para reusabilidade (cont.)
• Diretiva #include do pré-processador
– Usada para incluir arquivos de cabeçalho.
• Instrui o pré-processador C++ a substituir a diretiva por uma
cópia do conteúdo do arquivo especificado.
– As aspas indicam arquivos de cabeçalho definidos pelo
usuário.
• O pré-processador primeiramente procura no diretório atual.
– Se o arquivo não for encontrado, procura no diretório da
C++ Standard Library.
– A C++ Standard Library é representada por colchetes
angulares.
• O pré-processador procura apenas no diretório da C++
Standard Library.
56
Copyright © 2006 by Pearson Education
3.8 Colocando uma classe em um arquivo
separado para reusabilidade (cont.)
• Criando objetos
– O compilador deve conhecer o tamanho do objeto.
• Os objetos C++ em geral contêm apenas membros de dados.
• O compilador cria uma cópia das funções-membro da classe.
– Essa cópia é compartilhada por todos os objetos da
classe.

57
Copyright © 2006 by Pearson Education
Dica de prevenção de erro 3.3

Para assegurar que o pré-processador localize os arquivos


de cabeçalho corretamente, as diretivas de pré-
processador #include devem colocar os nomes de
arquivos de cabeçalho definidos pelo usuário entre aspas
(por exemplo, “GradeBook.h”) e os nomes de arquivos
de cabeçalho da C++ Standard Library entre colchetes
angulares (por exemplo, <iostream>).

58
Copyright © 2006 by Pearson Education
3.9 Separando a interface da
implementação
• Interface
– Descreve os serviços que os clientes de uma classe podem
usar e como podem solicitar esses serviços.
• Mas não revela como a classe executa esses serviços.
• Definição de classe que relaciona apenas o nome das funções-
membro, tipos de retorno e tipos de parâmetro.
– Protótipos de função
– A interface de uma classe consiste nas funções-membro
public da classe (serviços).
• Separando a interface da implementação
– O código-cliente não deve ser quebrado se a
implementação mudar e a interface permanecer a mesma.
59
Copyright © 2006 by Pearson Education
3.9 Separando a interface da
implementação (cont.)
• Separando a interface da implementação (cont.)
– Defina as funções-membro fora da definição de classe, em
um arquivo de código-fonte separado.
• Em um arquivo de código-fonte para uma classe
– Use um operador de resolução de escopo binário (::)
para unir cada função-membro à definição de classe.
• Os detalhes da implementação são ocultados.
– O código-cliente não precisa conhecer a implementação.
– Em um arquivo de cabeçalho para uma classe
• Os protótipos de função descrevem a interface public da
classe.

60
Copyright © 2006 by Pearson Education
Resumo
fig03_11.cpp

A interface contém protótipos de membros


de dados e de funções-membro.

61
Copyright © 2006 by Pearson Education
Erro comum de programação 3.8

Esquecer de colocar o ponto-e-vírgula no final de um


protótipo de função é um erro de sintaxe.

62
Copyright © 2006 by Pearson Education
Boa prática de programação 3.7

Embora os nomes de parâmetro em protótipos de


função sejam opcionais (eles são ignorados pelo
compilador), muitos programadores utilizam esses
nomes para documentação.

63
Copyright © 2006 by Pearson Education
Dica de prevenção de erro 3.4

Os nomes de parâmetro em um protótipo de função


(que, novamente, são ignorados pelo compilador) podem
ser enganosos, se forem utilizados nomes errados ou
confusos. Por essa razão, muitos programadores criam
protótipos de função copiando a primeira linha das
definições de função correspondentes (quando o código-
fonte das funções estiver disponível), acrescentando
então um ponto-e-vírgula ao final de cada protótipo.

64
Copyright © 2006 by Pearson Education
Erro comum de programação 3.9

Ao definir funções-membro de uma classe fora dessa


classe, a omissão do nome da classe e do operador de
resolução de escopo binário (::) que precede os nomes de
função provoca erros de compilação.

65
Copyright © 2006 by Pearson Education
Resumo
fig03_12.cpp
(1 de 2)

A implementação
GradeBook é colocada
em um arquivo de
código-fonte separado.

Inclui o arquivo
de cabeçalho para
acessar o nome de
classe
GradeBook.

O operador de resolução de escopo


binário une uma função à sua classe.

66
Copyright © 2006 by Pearson Education
Resumo
fig03_12.cpp
(2 de 2)

67
Copyright © 2006 by Pearson Education
Resumo
fig03_13.cpp

68
Copyright © 2006 by Pearson Education
3.9 Separando a interface da
implementação (cont.)
• O processo de compilação e vinculação
– O arquivo do código-fonte é compilado para criar o código-
objeto da classe (o arquivo do código-fonte deve #incluir
o arquivo de cabeçalho).
• O programador de implementação de classes precisa apenas
fornecer o arquivo de cabeçalho e o código-objeto ao cliente.
– O cliente deve #incluir o arquivo de cabeçalho em seu
próprio código
• Para que o compilador possa assegurar que a função main crie
e manipule corretamente objetos da classe.
– Para criar um aplicativo executável
• O código-objeto do código-cliente deve ser vinculado ao código-
objeto da classe e ao código-objeto de qualquer código-objeto
da Standard Library usado no aplicativo.

69
Copyright © 2006 by Pearson Education
Fig. 3.14 | O processo de compilação e vinculação que produz um aplicativo executável.

70
Copyright © 2006 by Pearson Education
3.10 Validando dados com funções set

• As funções set podem validar dados


– Esse processo é conhecido por teste de validade.
– Isso mantém o objeto em um estado consistente.
• O membro de dados contém um valor válido.
– Podem retornar valores indicativos de que houve a
tentativa de atribuir dados inválidos.
• Funções-membro string
– length retorna o número de caracteres na string.
– Substr retorna uma substring específica dentro da
string.

71
Copyright © 2006 by Pearson Education
Resumo
fig03_15.cpp

72
Copyright © 2006 by Pearson Education
Resumo
fig03_16.cpp
(1 de 2)

O construtor chama a função


set para executar o teste de
validade.

As funções set executam o


teste de validade para
manter courseName em
um estado consistente.

73
Copyright © 2006 by Pearson Education
Resumo
fig03_16.cpp
(2 de 2)

74
Copyright © 2006 by Pearson Education
Resumo
fig03_17.cpp
(1 de 2)

O construtor chamará a função set para


executar o teste de validade.

75
Copyright © 2006 by Pearson Education
Resumo
fig03_17.cpp
(2 de 2)

Chama a função set para executar


o teste de validade.

76
Copyright © 2006 by Pearson Education
Observação de engenharia de
software 3.6
Tornar os membros de dados private e controlar o
acesso, especialmente o acesso de gravação, àqueles
membros de dados via funções-membro public ajuda a
assegurar a integridade dos dados.

77
Copyright © 2006 by Pearson Education
Dica de prevenção de erro 3.5

Os benefícios da integridade de dados não são


automáticos simplesmente porque os membros de dados
se tornaram private — o programador deve fornecer
teste de validade apropriado e informar os erros.

78
Copyright © 2006 by Pearson Education
Observação de engenharia de
software 3.7
As funções-membro que configuram (set) os valores de
dados private devem verificar se os novos valores
projetados são adequados; se não forem, as funções set
devem colocar os membros de dados private em um
estado apropriado.

79
Copyright © 2006 by Pearson Education
3.11 Estudo de caso de engenharia de
software: identificando as classes no
documento de requisitos do ATM (opcional)

• Identificando as classes em um sistema


– Substantivos e substantivos compostos no documento de
requisitos
• Alguns são atributos de outras classes.
• Alguns não correspondem a partes do sistema.
• Alguns são classes
– A serem representadas por diagramas de classes UML.

80
Copyright © 2006 by Pearson Education
Fig. 3.18 | Substantivos e substantivos compostos no documento de requisitos.

81
Copyright © 2006 by Pearson Education
3.11 Estudo de caso de engenharia de software:
identificando as classes no documento de
requisitos do ATM (opcional) (cont.)
• Modelando classes com diagramas de classes UML
– O compartimento superior contém o nome da classe.
– O compartimento do meio contém atributos.
– O compartimento inferior contém operações.
– O diagrama elidido
• Suprime alguns atributos de classe e operações para melhorar a
legibilidade.
– Uma associação
• É representada por uma linha sólida que conecta duas classes.
• Pode ser nomeada.
• Os números próximos do fim de cada linha são valores de
multiplicidade.
• O nome de papel identifica o papel desempenhado por um objeto
em uma associação.
82
Copyright © 2006 by Pearson Education
Fig. 3.19 | Representando uma classe na UML utilizando um diagrama de classes.

83
Copyright © 2006 by Pearson Education
Fig. 3.20 | Diagrama de classes que mostra uma associação entre classes.

84
Copyright © 2006 by Pearson Education
Fig. 3.21 | Tipos de multiplicidade.

85
Copyright © 2006 by Pearson Education
3.11 Estudo de caso de engenharia de software:
identificando as classes no documento de requisitos
do ATM (opcional) (cont.)
• Relacionamento de composição
– Indicado por losangos sólidos anexados a linhas de
associação.
– Propriedades de composição
• Somente uma classe pode representar o todo.
• As partes só existem quando o todo existe. O todo cria e destrói
as partes.
• Uma parte só pode pertencer a um todo uma vez.
• Os losangos sem preenchimento indicam agregação
– Uma forma mais fraca de composição.
• Tipos de associação
– Um para um
– Um para muitos
– Muitos para um
86
Copyright © 2006 by Pearson Education
Fig. 3.22 | Diagrama de classes mostrando os relacionamentos de composição.

87
Copyright © 2006 by Pearson Education
Fig. 3.23 | Diagrama de classes para o modelo do sistema ATM.

88
Copyright © 2006 by Pearson Education
Fig. 3.24 | Diagrama de classes mostrando relacionamentos de composição de uma
classe Car.

89
Copyright © 2006 by Pearson Education
Fig. 3.25 | Diagrama de classes para o modelo do sistema ATM incluindo a classe Deposit.

90
Copyright © 2006 by Pearson Education
Para fazer: lista com 3.5, 3.6, 3.7, 3.8, 3.11, 3.12,
3.13 e 3.15 em trios de até 3

91
Copyright © 2006 by Pearson Education

Você também pode gostar