A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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++,...)

Apresentações semelhantes


Apresentação em tema: "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++,...)"— Transcrição da apresentação:

1 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

2 2 Engenharia de Software Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Visão Clássica

3 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) Diagramas da UNIFIED MODELING LANGUAGE (UML) e SYSTEM MODELING LANGUAGE (SysML). Linguagem e Ambiente de Programação OO Linguagem e Ambiente de Programação OO e eventualmente Ambiente de Testes.

4 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++.

5 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

6 6 Unified Modeling Language (UML) Diagrama de Classe

7 7 Análise-Projeto / Implementação Uma classe em UML Uma classe em C++ #ifndef _PESSOA_H_ #define _PESSOA_H_ class Pessoa { protected 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

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

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

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

11 11 Diagrama de Classes (“Análise”) – Papeis associativos Disciplina -id: int -nome: char[150] -area_conhecimento: char[150] >-Disciplina(i: int, na: int, ac: char) >+Disciplina() >-Disciplina() +setId(i: int): void +getId(): int +setNome(n: char*): void +getNome(): char* Aluno -RA: int >+Aluno() >+Aluno(i: int) >+Aluno() +setRA(ra: int): void +getRA(): int Cursar +Cursada+Cursa 1..*

12 12 Disciplina -id: int -nome: char[150] -area_conhecimento: char[150] >-Disciplina(i:int, na:int, ac:char) >+Disciplina() >-Disciplina() +setId(i: int): void +getId(): int +setNome(n: char*): void +getNome(): char* Aluno -RA: int >+Aluno() >+Aluno(i: int) >+Aluno() +setRA(ra: int): void +getRA(): int Cursar +Cursa +Cursada 1..* Realização – Relação entre Relações

13 13 Unified Modeling Language (UML) Diagrama de Classe (de "análise" e de "projeto")

14 14 Diagrama de Classe Associação Direcional

15 15 Diagrama de Classe Associaçã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.

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

17 17 Diagrama de Classe (de “Análise”) Associação Bidirecional com Papeis FILIAR +gerencia_estudo +estuda 1 1..* Departamento -id: int -nome: char[100] >+Departamento(i: int) >+Departamento() +getId(): int +setNome(n: char): void +getNome(): char Aluno -RA: int >+Aluno() >+Aluno(i: int) >+Aluno() +setRA(ra: int): void +getRA(): int

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

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

20 20 Diagrama de Classe (de “Projeto”) Esteriótipo Aluno -RA: int >+Aluno() >+Aluno(i: int) +setRA(ra: int): void +getRA(): int +setDepartamento(d: Departamento*): void +getDepartamento(): Departamento* +setId(i: int): void +getId(): int FILIAR +gerencia_estudos +estudande 1 1..* Departamento -id: int -nome: char[100] +... +objtLAlunos: ListaAluno >+Departamento(i: int) >+Departamento() +getId(): int +setNome(n: char*): void +getNome(): char* +incluaAluno(a: Aluno*): void +listeAlunos(): void +...() 1 ListaAluno > -quant: int -nome: char +ListaAluno(nome: char) ~ListaAluno() +getQuant(): int +setQuant(int q): void +incluaAlunos(a: Aluno*): void +listeAlunos(): void ESTAR +lista +listado 0..1 1..* 1 CONHECER +conhece 1 1

21 21 Diagrama de Classe (de “Projeto”) Realização Aluno -RA: int >+Aluno() >+Aluno(i: int) +setRA(ra: int): void +getRA(): int +setDepartamento(d: Departamento*): void +getDepartamento(): Departamento* +setId(i: int): void +getId(): int FILIAR +gerencia_estudos +estudande 1..* Departamento -id: int -nome: char[100] +... +objtLAlunos: ListaAluno >+Departamento(i: int) >+Departamento() +getId(): int +setNome(n: char*): void +getNome(): char* +incluaAluno(a: Aluno*): void +listeAlunos(): void +...() 1 ListaAluno > -quant: int -nome: char +ListaAluno(nome: char) ~ListaAluno() +getQuant(): int +setQuant(int q): void +incluaAlunos(a: Aluno*): void +listeAlunos(): void ElAluno > ESTAR+lista +listado 1 1..* CONHECER +conhecido +conhece 1 0..1 0..* CONHECER +conhece 1 1 0..1

22 22 Diagrama de Classe (de “Projeto”) “Refinando Realização” – “Relação Reflexiva” Aluno -RA: int >+Aluno() >+Aluno(i: int) +setRA(ra: int): void +getRA(): int +setDepartamento(d: Departamento*): void +getDepartamento(): Departamento* +setId(i: int): void +getId(): int FILIAR +gerencia_estudos +estudande 1 1..* Departamento -id: int -nome: char[100] +... +objtLAlunos: ListaAluno >+Departamento(i: int) >+Departamento() +getId(): int +setNome(n: char*): void +getNome(): char* +incluaAluno(a: Aluno*): void +listeAlunos(): void +...() 1 ListaAluno > -quant: int -nome: char +ListaAluno(nome: char) ~ListaAluno() +getQuant(): int +setQuant(int q): void +incluaAlunos(a: Aluno*): void +listeAlunos(): void ElAluno > ESTAR +lista +listado 0..1 1..* CONHECER +conhecido +conhece 1 0..1 Conhecer Próximo Conhecer Anterior Conhecer Primeiro0..1 Conhecer Atual0..1 0..* CONHECER +conhece 1 1 1 0..1

23 23 Diagrama de Classe (de “Projeto”) “Projeto – ‘Eliminando’ Análise” - 1 Aluno -RA: int >+Aluno() >+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 >+Departamento(i: int) >+Departamento() +getId(): int +setNome(n: char*): void +getNome(): char* +incluaAluno(a: Aluno*): void +listeAlunos(): void +...() 1 ListaAluno > -quant: int -nome: char +ListaAluno(nome: char) ~ListaAluno() +getQuant(): int +setQuant(int q): void +incluaAlunos(a: Aluno*): void +listeAlunos(): void ElAluno > ESTAR +lista +listado 0..1 1..* CONHECER +conhecido +conhece 1 0..1 Conhecer Próximo Conhecer Anterior Conhecer Primeiro0..1 Conhecer Atual0..1 0..* CONHECER +conhece 1 1 0..1 1

24 24 Diagrama de Classe (de “Projeto”) “Projeto – ‘Eliminando’ Análise” - 2 Aluno -RA: int >+Aluno() >+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 >+Departamento(i: int) >+Departamento() +getId(): int +setNome(n: char*): void +getNome(): char* +incluaAluno(a: Aluno*): void +listeAlunos(): void +...() 1 ListaAluno > -quant: int -nome: char +ListaAluno(nome: char) ~ListaAluno() +getQuant(): int +setQuant(int q): void +incluaAlunos(a: Aluno*): void +listeAlunos(): void ElAluno > CONHECER +conhecido +conhece 1 0..1 Conhecer Próximo Conhecer Anterior Conhecer Primeiro0..1 1 Conhecer Atual0..1 0..* CONHECER +conhece 1 1 0..1

25 25 Diagrama de Classe (de “Projeto”) “Projeto – ‘Eliminando’ Análise” - 3 Aluno -RA: int >+Aluno() >+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 >+Departamento(i: int) >+Departamento() +getId(): int +setNome(n: char*): void +getNome(): char* +incluaAluno(a: Aluno*): void +listeAlunos(): void +...() 1 ListaAluno > -quant: int -nome: char +ListaAluno(nome: char) ~ListaAluno() +getQuant(): int +setQuant(int q): void +incluaAlunos(a: Aluno*): void +listeAlunos(): void ElAluno > CONHECER +conhecido +conhece 1 0..1 Conhecer Próximo Conhecer Anterior Conhecer Primeiro 0..1 Conhecer Atual0..1 CONHECER +conhece 1 1 0..1

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

27 27 Diagrama de Classe (de “Projeto”) Composição (Agregação Forte) Disciplina -id: int -nome: char[100] -area_conhecimento: char[100] >-Disciplina(i: int, na: int, ac: char*) >-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 >+Departamento(i: int) >+Departamento() +getId(): int +setNome(n: char*): void +getNome(): char* +incluaAluno(a: Aluno*): void +listeAlunos(): void +...() 1..* ListaDisciplina > ElDisciplina > CONHECER CONHECER PRIMEIRO CONHECER ATUAL CONHECER PROXIMO CONHECER ANTERIOR 1 1 Conhecer 1..* 0..* 1


Carregar ppt "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++,...)"

Apresentações semelhantes


Anúncios Google