29
1 Orientação a Objetos - Programação em C++ Slides 9: Programação ou Implementação: uma fase da engenharia de software. Projeto (UML) e Programação (C++, ...) OO – Engenharia Eletrônica Prof. Dr. Jean Marcelo SIMÃO – DAELN / UTFPR

Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

Embed Size (px)

Citation preview

Page 1: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

1

Orientação a Objetos -

Programação em C++

Slides 9: Programação ou Implementação: uma fase da engenharia de software.

Projeto (UML) e Programação (C++, ...)

OO – Engenharia Eletrônica

Prof. Dr. Jean Marcelo SIMÃO – DAELN / UTFPR

Page 2: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

2

Engenharia de Software

Levantamento

de

Requisitos

Análise

e

Projeto

Implementação

ou

Codificação

Testes

Visão Clássica

Page 3: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

3

Engenharia de Software OO

Levantamento

de

Requisitos

Análise

e

Projeto

Implementação

ou

Codificação

Testes

Texto Estruturado

Diagramas de Casos

de Uso da UML.

Diagramas de

Requisitos da SysML.

Exemplos de Técnicas

Diagramas UML de:

- CLASSES.

- Objetos/Seqüência.

-Colaboração.

-Estados.

-Atividades.

-Componentes.

Código em Ling. de

Programação OO,

por exemplo C++,

Java ou C#.

Testes utilizando o

software gerado,

utilizando registro

em arquivos,

usando debugger

etc.

Diagramas da UNIFIED MODELING LANGUAGE (UML)

e SYSTEM MODELING LANGUAGE (SysML).

Linguagem e Ambiente de Programação OO

e eventualmente Ambiente de Testes.

Page 4: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

4

Engenharia de Software OO

Levantamento

de

Requisitos

Análise

e

Projeto

Implementação

ou

Codificação

Testes

Textos, Diagramas de

Casos de Uso da UML etc

Exemplos de Ferramentas

Diagramas UML de:

- CLASSES

- Objetos

- Seqüência

-Colaboração

-Estados

-Atividades

Código em

Linguagem de

Programação OO,

por exemplo C++, Java ou

C#

Testes utilizando o

software gerado,

utilizando registro em

arquivos, usando

debugger.

Ferramentas CASE: StarUML, Jude,

Rational Rose, System Architect,

Together, VisualParadigm, Rhapsody

. . .

Ambiente de Programação OO (integráveis as

Ferramentas CASE): Microsoft Visual C++ .net Express

Edition, Microsoft Visual C++ .net, Microsoft Visual C++, Borland

Builder C++, Borland C++, Dev C++, G++.

Page 5: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

5

Bibliografias:

- Pressman, R. S. Software Engineering – A Practitioner’s Approach. 6th Edition

McGraw Hill (Higher Education). 2005. ISBN 0-07-285318-2.

- RUMBAUGH, J.; JACOBSON, I.; BOOCH, G. The Unified Software Development

Process. 1st Edition. Addison-Wesley. 2005. ISBN 0-201-57169-2.

- RUMBAUGH, J.; JACOBSON, I.; BOOCH, G. The Unified Modeling Language

Reference Manual. 2nd Edition. Addison-Wesley. 2005. ISBN 0-321-26797-4.

- Bezerra, E. Princípios de Análise e Projeto de Sistemas com UML. Editora Campus.

2003. ISBN 85-352-1032-6.

Outras bibliografias:

- GAMMA, E.; HELM, R.; Johnson, R.; Vlissides, J. Design Patterns: Elements of

Reusable Object-oriented Software. Addison Wesley Longman, 1995.

- Largman, G. Applying UML and Patterns – An Introduction to Object-Oriented

Analysis and Design. Prentice Hall. 1998. ISBN 0-13-748880-7.

Bibliografias

Page 6: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

6

Unified Modeling Language (UML)

Diagrama de Classe

Page 7: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

7

Análise-Projeto / Implementação

Uma classe em UML Uma classe em C++

#ifndef _PESSOA_H_

#define _PESSOA_H_

class Pessoa

{

protected:

int diaP;

int mesP;

int anoP;

int idadeP;

char nomeP[ 30 ];

int id;

public:

Pessoa ( int diaNa, int mesNa, int anoNa, char* nome = "");

Pessoa ( );

~Pessoa ( );

void Inicializa (int diaNa, int mesNa, int anoNa, char* nome = "" );

void Calc_Idade (int diaAT, int mesAT, int anoAT );

void Calc_Idade ( int anoAT );

int informaIdade ( );

void seId ( int i ) { id = i; }

int getId ( ) { return id; }

void seNome ( char* n ) { strcpy(nomeP, n); }

char* getNome ( ) { return nome; }

};

#endif

Pessoa

#diaP: int#mesP: int#anoP: int#idadeP: int#nomeP: char[30]#id: int

<<create>>+Pessoa(diaNa: int, mesNa: int, anoNa: int, nome: char)<<create>>+Pessoa()<<destroy>>+Pessoa()+Inicializa(diaNa: int, mesNa: int, anoNa: int, nome: char): void+Calc_Idade(diaAT: int, mesAT: int, anoAT: int): void+Calc_Idade(anoAT: int): void+informaIdade(): int+setNome(n: char*): void+getNome(): char*+setId(i: int): void+getId(): int

Page 8: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

8

Diagrama de Classe (de “Análise”) - Herança

Professor

<<create>>-Professor(diaNa: int, mesNa: int, anoNa: int, nome: char)<<create>>-Professor(i: int)<<destroy>>-Professor()+OndeTrabalho(): void+QualDepartamentoTrabalho(): void

Pessoa

#diaP: int#mesP: int#anoP: int#idadeP: int#nomeP: char[30]#id: int

<<create>>+Pessoa(diaNa: int, mesNa: int, anoNa: int, nome: char)<<create>>+Pessoa(i: int)<<destroy>>+Pessoa()+Inicializa(diaNa: int, mesNa: int, anoNa: int, nome: char): void+Calc_Idade(diaAT: int, mesAT: int, anoAT: int): void+Calc_Idade(anoAT: int): void+informaIdade(): int+setNome(n: char*): void+getNome(): char*+setId(i: int): void+getId(): int

Aluno

-RA: int

<<create>>+Aluno(i: int)<<create>>+Aluno(diaNa: int, mesNa: int, anoNa: int, nomeNa: char*)<<destroy>>+Aluno()+setRA(ra: int): void+getRA(): int

RA = Registro Acadêmico

Page 9: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

9

Diag. Classes (“Análise”) Agregação (Fraca -Simples)

Disciplina

-id: int-nome: char[150]-area_conhecimento: char[150]

<<create>>-Disciplina(i: int, na: int, ac: char*)<<create>>+Disciplina()<<destroy>>-Disciplina()+setId(i: int): void+getId(): int+setNome(n: char*): void+getNome(): char*

Aluno

-RA: int

<<create>>+Aluno(i: int)<<create>>+Aluno(diaNa: int, mesNa: int, anoNa: int, nomeNa: char*)<<destroy>>+Aluno()+setRA(ra: int): void+getRA(): int

1..* 1..*

Page 10: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

10

Diagrama de Classes (“Análise”) - Associação

Disciplina

-id: int-nome: char[150]-area_conhecimento: char[150]

<<create>>-Disciplina(i: int, na: int, ac: char*)<<create>>+Disciplina()<<destroy>>-Disciplina()+setId(i: int): void+getId(): int+setNome(n: char*): void+getNome(): char*

Aluno

-RA: int

<<create>>+Aluno(i: int)<<create>>+Aluno(diaNa: int, mesNa: int, anoNa: int, nomeNa: char*)<<destroy>>+Aluno()+setRA(ra: int): void+getRA(): int

Cursar

1..*1..*

Page 11: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

11

Diagrama de Classes (“Análise”) – Papeis

associativos

Disciplina

-id: int-nome: char[150]-area_conhecimento: char[150]

<<create>>-Disciplina(i: int, na: int, ac: char*)<<create>>+Disciplina()<<destroy>>-Disciplina()+setId(i: int): void+getId(): int+setNome(n: char*): void+getNome(): char*

Aluno

-RA: int

<<create>>+Aluno(i: int)<<create>>+Aluno(diaNa: int, mesNa: int, anoNa: int, nomeNa: char*)<<destroy>>+Aluno()+setRA(ra: int): void+getRA(): int

Cursar

+São Cursadas+Cursam

1..*1..*

Page 12: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

12

Realização – Relação entre Relações

Disciplina

-id: int-nome: char[150]-area_conhecimento: char[150]

<<create>>-Disciplina(i: int, na: int, ac: char*)<<create>>+Disciplina()<<destroy>>-Disciplina()+setId(i: int): void+getId(): int+setNome(n: char*): void+getNome(): char*

Aluno

-RA: int

<<create>>+Aluno(i: int)<<create>>+Aluno(diaNa: int, mesNa: int, anoNa: int, nomeNa: char*)<<destroy>>+Aluno()+setRA(ra: int): void+getRA(): int

Cursar

+São Cursadas+Cursam

1..*1..*

1..* 1..*

Page 13: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

13

Unified Modeling Language (UML)

Diagrama de Classe

(de "análise" e de "projeto")

Page 14: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

14

Diagrama de ClasseAssociação Direcional

Aluno

-RA: int

<<create>>+Aluno(i: int)<<create>>+Aluno(diaNa: int, mesNa: int, anoNa: int, nomeNa: char*)<<destroy>>+Aluno()+setRA(ra: int): void+getRA(): int

Departamento

-id: int-nome: char[100]

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char): void+getNome(): char

CONHECER

1

Page 15: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

15

Diagrama de ClasseAssociação Direcional

Aqui seria um diagrama de classes no escopo da

‘análise’, pois contém apenas as informações

essenciais das classes e de seus relacionamentos.

Aluno

-RA: int

<<create>>+Aluno(i: int)<<create>>+Aluno(diaNa: int, mesNa: int, anoNa: int, nomeNa: char*)<<destroy>>+Aluno()+setRA(ra: int): void+getRA(): int

Departamento

-id: int-nome: char[100]

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char): void+getNome(): char

CONHECER

1

Page 16: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

16

Diagrama de Classe (de “Análise”)

Associação Bidirecional

Aluno

-RA: int

<<create>>+Aluno(i: int)<<create>>+Aluno(diaNa: int, mesNa: int, anoNa: int, nomeNa: char*)<<destroy>>+Aluno()+setRA(ra: int): void+getRA(): int

Departamento

-id: int-nome: char[100]

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char): void+getNome(): char

CONHECER

11..*

Page 17: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

17

Diagrama de Classe (de “Análise”)Associação Bidirecional com Papeis

CONHECER

+gerencia_estudo+estuda

11..*

Departamento

-id: int-nome: char[100]

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char): void+getNome(): char

Aluno

-RA: int

<<create>>+Aluno(i: int)<<create>>+Aluno(diaNa: int, mesNa: int, anoNa: int, nomeNa: char*)<<destroy>>+Aluno()+setRA(ra: int): void+getRA(): int

Page 18: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

18

Diagrama de Classe (de “Projeto”)Classe de Associação

Aluno

-RA: int

<<destroy>>+Aluno()<<create>>+Aluno(i: int)+setRA(ra: int): void+getRA(): int+setDepartamento(d: Departamento*): void+getDepartamento(): Departamento*+setId(i: int): void+getId(): int

Departamento

-id: int-nome: char[100]-. . .-objtLAlunos: ListaAluno

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char*): void+getNome(): char*+incluaAluno(a: Aluno*): void+listeAlunos(): void+. . .()

CONHECER+gerencia_estudos+estudande

11..*

ListaAluno<<Projeto>>

-quant: int

<<create>>+ListaAluno()<<destroy>>+ListaAlunos()+getQuant(): int+setQuant(int q): void+incluaAlunos(a: Aluno*): void+listeAlunos(): void

Page 19: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

19

Diagrama de Classe (de “Projeto”)Composição (Agregação Forte)

Aluno

-RA: int

<<destroy>>+Aluno()<<create>>+Aluno(i: int)+setRA(ra: int): void+getRA(): int+setDepartamento(d: Departamento*): void+getDepartamento(): Departamento*+setId(i: int): void+getId(): int

Departamento

-id: int-nome: char[100]-. . .-objtLAlunos: ListaAluno

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char*): void+getNome(): char*+incluaAluno(a: Aluno*): void+listeAlunos(): void+. . .()

CONHECER

+gerencia_estudos+estudande

11..*

ListaAluno<<Projeto>>

-quant: int

<<create>>+ListaAluno()<<destroy>>+ListaAlunos()+getQuant(): int+setQuant(int q): void+incluaAlunos(a: Aluno*): void+listeAlunos(): void

1

1

Page 20: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

20

Diagrama de Classe (de “Projeto”)Estereótipo

1

Aluno

-RA: int

<<destroy>>+Aluno()<<create>>+Aluno(i: int)+setRA(ra: int): void+getRA(): int+setDepartamento(d: Departamento*): void+getDepartamento(): Departamento*+setId(i: int): void+getId(): int

CONHECER+gerencia_estudos+estudande

11..*

Departamento

-id: int-nome: char[100]+. . .+objtLAlunos: ListaAluno

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char*): void+getNome(): char*+incluaAluno(a: Aluno*): void+listeAlunos(): void+. . .()

1

1

ListaAluno<<Projeto>>

-quant: int-nome: char

+ListaAluno(nome: char)~ListaAluno()+getQuant(): int+setQuant(int q): void+incluaAlunos(a: Aluno*): void+listeAlunos(): void

ESTAR

+lista

+listado

1

1..*

Page 21: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

Diagrama de Classe (de “Projeto”)

Realização

21

Aluno

-RA: int

<<destroy>>+Aluno()<<create>>+Aluno(i: int)+setRA(ra: int): void+getRA(): int+setDepartamento(d: Departamento*): void+getDepartamento(): Departamento*+setId(i: int): void+getId(): int

CONHECER

+gerencia_estudos+estudande

11..*

Departamento

-id: int-nome: char[100]-. . .-objtLAlunos: ListaAluno

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char*): void+getNome(): char*+incluaAluno(a: Aluno*): void+listeAlunos(): void+. . .()

1

1ListaAluno

<<Projeto>>

-quant: int

<<create>>+ListaAluno()<<destroy>>+ListaAlunos()+getQuant(): int+setQuant(int q): void+incluaAlunos(a: Aluno*): void+listeAlunos(): void

ESTAR +lista

+listado

1

1..*

CONHECER+conhece

11

Page 22: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

22

Diagrama de Classe (de “Projeto”)Realização

Aluno

-RA: int

<<destroy>>+Aluno()<<create>>+Aluno(i: int)+setRA(ra: int): void+getRA(): int+setDepartamento(d: Departamento*): void+getDepartamento(): Departamento*+setId(i: int): void+getId(): int

CONHECER+gerencia_estudos+estudande

11..*

Departamento

-id: int-nome: char[100]-. . .-objtLAlunos: ListaAluno

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char*): void+getNome(): char*+incluaAluno(a: Aluno*): void+listeAlunos(): void+. . .()

1

1ListaAluno

<<Projeto>>

-quant: int

<<create>>+ListaAluno()<<destroy>>+ListaAlunos()+getQuant(): int+setQuant(int q): void+incluaAlunos(a: Aluno*): void+listeAlunos(): void

ElAluno<<Projeto>>

ESTAR+lista

+listado

1

1..*

CONHECER

+conhecido

+conhece

1

*11..*

CONHECER+conhece

11

Page 23: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

23

Diagrama de Classe (de “Projeto”)“Refinando Realização” – “Relação Reflexiva”

Aluno

-RA: int

<<destroy>>+Aluno()<<create>>+Aluno(i: int)+setRA(ra: int): void+getRA(): int+setDepartamento(d: Departamento*): void+getDepartamento(): Departamento*+setId(i: int): void+getId(): int

CONHECER

+gerencia_estudos+estudande

11..*

Departamento

-id: int-nome: char[100]-. . .-objtLAlunos: ListaAluno

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char*): void+getNome(): char*+incluaAluno(a: Aluno*): void+listeAlunos(): void+. . .()

1

1

ListaAluno<<Projeto>>

-quant: int

<<create>>+ListaAluno()<<destroy>>+ListaAlunos()+getQuant(): int+setQuant(int q): void+incluaAlunos(a: Aluno*): void+listeAlunos(): void

ElAluno<<Projeto>>

ESTAR

+lista

+listado

1

1..*

CONHECER

+conhecido

+conhece

1

*

Conhecer Próximo

0..1

0..1Conhecer Anterior

0..1

0..1

Conhecer Primeiro0..1 0..1

Conhecer Atual0..1 0..1

11..*

CONHECER+conhece

11

Page 24: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

24

Diagrama de Classe (de “Projeto”)“Projeto – ‘Eliminando’ Análise” - 1

Aluno

-RA: int

<<destroy>>+Aluno()<<create>>+Aluno(i: int)+setRA(ra: int): void+getRA(): int+setDepartamento(d: Departamento*): void+getDepartamento(): Departamento*+setId(i: int): void+getId(): int

Departamento

-id: int-nome: char[100]-. . .-objtLAlunos: ListaAluno

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char*): void+getNome(): char*+incluaAluno(a: Aluno*): void+listeAlunos(): void+. . .()

1

1

ListaAluno<<Projeto>>

-quant: int

<<create>>+ListaAluno()<<destroy>>+ListaAlunos()+getQuant(): int+setQuant(int q): void+incluaAlunos(a: Aluno*): void+listeAlunos(): void

ElAluno<<Projeto>>

ESTAR

+lista

+listado

1

1..*

CONHECER

+conhecido

+conhece

1

*

Conhecer Próximo0..1

0..1Conhecer Anterior

0..1

0..1

Conhecer Primeiro0..1 0..1

Conhecer Atual0..1 0..1

1

1..*

CONHECER+conhece

11

Page 25: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

25

Diagrama de Classe (de “Projeto”)“Projeto – ‘Eliminando’ Análise” - 2

Aluno

-RA: int

<<destroy>>+Aluno()<<create>>+Aluno(i: int)+setRA(ra: int): void+getRA(): int+setDepartamento(d: Departamento*): void+getDepartamento(): Departamento*+setId(i: int): void+getId(): int

Departamento

-id: int-nome: char[100]-. . .-objtLAlunos: ListaAluno

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char*): void+getNome(): char*+incluaAluno(a: Aluno*): void+listeAlunos(): void+. . .()

1

1

ListaAluno<<Projeto>>

-quant: int

<<create>>+ListaAluno()<<destroy>>+ListaAlunos()+getQuant(): int+setQuant(int q): void+incluaAlunos(a: Aluno*): void+listeAlunos(): void

ElAluno<<Projeto>>

CONHECER

+conhecido

+conhece

1

*

Conhecer Próximo

0..1

0..1

Conhecer Anterior

0..1

0..1

Conhecer Primeiro0..1 0..1

Conhecer Atual0..1 0..1

1

1..*

CONHECER+conhece

11

Page 26: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

26

Diagrama de Classe (de “Projeto”)“Projeto – ‘Eliminando’ Análise” - 3

Aluno

-RA: int

<<destroy>>+Aluno()<<create>>+Aluno(i: int)+setRA(ra: int): void+getRA(): int+setDepartamento(d: Departamento*): void+getDepartamento(): Departamento*+setId(i: int): void+getId(): int

Departamento

-id: int-nome: char[100]-. . .-objtLAlunos: ListaAluno

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char*): void+getNome(): char*+incluaAluno(a: Aluno*): void+listeAlunos(): void+. . .()

1

1

ListaAluno<<Projeto>>

-quant: int

<<create>>+ListaAluno()<<destroy>>+ListaAlunos()+getQuant(): int+setQuant(int q): void+incluaAlunos(a: Aluno*): void+listeAlunos(): void

ElAluno<<Projeto>>

CONHECER

+conhecido

+conhece

1

*

Conhecer Próximo

0..1

0..1

Conhecer Anterior

0..1

0..1

Conhecer Primeiro0..1 0..1

Conhecer Atual0..1 0..1

CONHECER+conhece

11

Page 27: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

27

Diagrama de Classe (de “Análise”)Composição (Agregação Forte)

Departamento

-id: int-nome: char[100]

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char): void+getNome(): char

Disciplina

-id: int-nome: char[150]-area_conhecimento: char[150]

<<create>>+Disciplina(i: int, na: int, ac: char*)<<create>>+Disciplina()<<destroy>>+Disciplina()+setId(i: int): void+getId(): int+setNome(n: char*): void+getNome(): char*

1 1..*

Page 28: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

28

Diagrama de Classe (de “Projeto”)Composição (Agregação Forte)

Disciplina

-id: int-nome: char[100]-area_conhecimento: char[100]-pDepto: Departamento*

<<create>>-Disciplina(i: int, na: int, ac: char*)<<destroy>>-Disciplina()+setId(i: int): void+getId(): int+setNome(n: char*): void+getNome(): char*+setDepartamento(d: Departamento*): void+getDepartamento(): Departamento*+setAluno(a: Aluno): void+listeAlunos(): void+listeAlunos2(): void

Departamento

-id: int-nome: char[100]-. . .-objtLAlunos: ListaAluno

<<create>>+Departamento(i: int)<<destroy>>+Departamento()+getId(): int+setNome(n: char*): void+getNome(): char*+incluaAluno(a: Aluno*): void+listeAlunos(): void+. . .()

1 1..*

ListaDisciplina<<Projeto>>

ElDisciplina<<Projeto>>

1

1

CONHECER

1

*

CONHECER PRIMEIRO

0..10..1

CONHECER ATUAL

0..10..1

CONHECER PROXIMO

0..10..1

CONHECER ANTERIOR

0..1

0..1

Conhecer1 *

Page 29: Orientação a Objetos Programação em C+++9-2018-04-05.pdf · 4 Engenharia de Software OO Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos,

StarUML

• Versão usada da Ferramenta CASE STAR

UML:

– Version 5.0.2.1570

29