Orientação a Objetos - Programação em C++



Documentos relacionados
Orientação a Objetos. Programação em C++

Orientação a Objetos. Programação em C++

Orientação a Objetos. Programação em C++

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Curitiba PLANO DE ENSINO

Gestão de Projectos de Software - 1

Orientação a Objetos. Programação em C++

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Campus Curitiba PLANO DE ENSINO

Orientação a Objetos. Programação em C++

Ciência da Computação ENGENHARIA DE SOFTWARE. UML-Unified Modeling Language Linguagem de Modelagem Unificada

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Campus Curitiba PLANO DE ENSINO

Programação orientada a objetos usando a linguagem C++ CDTN Centro de Desenvolvimento de Tecnologia Nuclear

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC

UML & Padrões. Aula 1 Apresentação. Profª Kelly Christine C. Silva

RELACIONAMENTOS ENTRE CLASSES

Aula 5 UML: Casos de Uso

UNIVERSIDADE PRESBITERIANA MACKENZIE Faculdade de Computação e Informática EMENTAS DA 3ª. ETAPA

UML: Casos de Uso. Projeto de Sistemas de Software

UML Linguagem de Modelagem Unificada


Diagrama de Classes. Diagrama de Classes. Diagramas de Classe. POST Criando Diagramas de Classe. Como construir (2)

Casos de Uso O que é. Casos de Uso. Objetivos de um Caso de Uso. Atores. Atores e Casos de Uso. Diagramas de Caso de Uso

O que é a UML? Introdução a UML. Objetivos da Modelagem. Modelos. A UML não é. Princípios da Modelagem. O que é um modelo?

Engenharia de Software - 1

Programa Analítico de Disciplina INF323 Engenharia de Software II

Diagrama de Sequência Notação Objetos. Diagrama de Sequência Notação Mensagens. Diagrama de Sequência Notação Mensagens. Tipos de Mensagens

Modelagem de Processos. Prof.: Fernando Ascani

Programação com Objectos. Programação Centrada em Objectos. Home Page. Ano Lectivo 2008/2009 1º Semestre. Objectivos Programa Bibliografia Avaliação

REPRESENTAÇÃO DE REQUISITOS VARIÁVEIS COM UML, SEGUINDO O MÉTODO ICONIX

RUP. Evolução. Principais Características do RUP. Principais Características do RUP RUP

Universidade Federal do ABC Rua Santa Adélia, Bairro Bangu - Santo André - SP - Brasil CEP Telefone/Fax:

Introdução. Diagramas de Interação. Introdução. Introdução. Introdução. Introdução. Os modelos de análise não respondem a algumas perguntas:

Tecnologias Atuais de. Desenvolvimento de Software

Capítulo 8. Introdução UML

Orientação a Objetos I

modelagem do negócio (processos e objetos do negócio) modelagem de requisitos alocados ao software modelagem da solução de software

UML Visão Geral. Índice. Introdução. Diagramas. Modelos e diagramas. Elementos de modelação. Referências

Análise e Projeto Orientados a Objeto

SERVIÇO PÚBLICO FEDERAL UNIVERSIDADE FEDERAL DE SANTA CATARINA CENTRO DE CIÊNCIAS DA SAÚDE PROGRAMA DE MESTRADO PROFISSIONAL EM INFORMÁTICA EM SAÚDE

UML e a Ferramenta Astah. Profa. Reane Franco Goulart

Análise e Projeto OO com UML. Lição 3 Especificação e Modelagem de Requisitos com UML

Universidade Estadual de Ponta Grossa PRÓ-REITORIA DE GRADUAÇÃO DIVISÃO DE ENSINO

Planejamento da disciplina: Modelagem de processos de negócio

Introdução a UML. Agenda. Definição Histórico Contribuições Diagramas Observações. Cleidson de Souza (Rodrigo Reis)

MODELOS DE PROCESSO. Isac Aguiar isacaguiar.com.br

(Versão /2/2014)

Linguagem de Programação I. Orientação a Objetos em Java

Universidade Federal do Rio Grande do Norte - UFRN Programa de Pós-Graduação em Engenharia de Software - PPGSW

INF1013 MODELAGEM DE SOFTWARE

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

SERVIÇO PÚBLICO FEDERAL UNIVERSIDADE FEDERAL DE SANTA CATARINA CENTRO DE CIÊNCIAS DA SAÚDE PROGRAMA DE MESTRADO PROFISSIONAL EM INFORMÁTICA EM SAÚDE

Notas de Aula 04: Casos de uso de um sistema

Exemplo de Modelagem Orientada a Objetos

Programação Orientada a Objeto

Modelagem de Sistemas Orientado a Objetos com UML.

FACULDADE PROJEÇÃO ESCOLA DE TECNOLOGIA UNIDADE SOBRADINHO

build UNIP Sistemas de Informação Análise Essencial de Sistemas 3 Prof.Marcelo Nogueira A produção de Software é uma atividade build and fix.

Sistemas de Informação

Introdução à UML. Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX. Prof. Fernando Maia da Mota

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

Sistema de Apoio ao Ensino de Modelagem de Software Uma extensão para o editor de programação BlueJ

UML - Unified Modeling Language

ANÁLISE E PROJETO ORIENTADO A OBJETOS. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

Diagrama de Caso de Uso e Diagrama de Sequência

UML: Introdução. História Visão geral Modelo conceitual da UML. Bibliografia. UML: introdução

Linguagem de Modelagem Unificada

Orientação a Objetos. Programação em C++

English version at the end of this document

Palavras-Chaves: engenharia de requisitos, modelagem, UML.

Padrões de Desenho (Design Patterns)

ATENAS: Um Sistema Gerenciador de Regras de Negócio

CASO DE USO. Isac Aguiar isacaguiar.com.br

Introdução ao RUP Rational Unified Process. por Denize Terra Pimenta Outubro/2004

Introdução. Pacote. Classe. UML Diagrama de. Atributo. Classes. Método. Prof. Dr. Enzo Seraphim. Visibilidade

UML Visão Geral. Slides baseados em material disponibilizado pela Rational e adaptação da tradução de João P. Faria Univ. Do Porto.

English version at the end of this document

Levantamento, Análise e Gestão Requisitos. Aula 04

FACULDADE PROJEÇÃO ESCOLA DE TECNOLOGIA. Edital para o Processo de Seleção de alunos para o Laboratório de Práticas de Desenvolvimento.

Modelando com UML Unified Modeling Language

PRÓ-REITORIA DE EXTENSÃO, PESQUISA E INOVAÇÃO DIRETORIA DE PESQUISA E INOVAÇÃO Proposta de Projeto de Pesquisa

Universidade Federal do Rio Grande do Norte - UFRN Programa de Pós-Graduação em Engenharia de Software - PPGSW

Licenciatura de EI 2010/2011. Mário Santos / Carlos Ramos

UML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2

Análise e Projeto Orientados a Objeto

Modelando sistemas Multiagentes Analisando Metodologias

ESPECIFICAÇÃO DO AMBIENTE EXPSEE SEGUNDO O MÉTODO CATALYSIS

Orientação a Objetos. Programação em C++

Ciência da Computação ENGENHARIA DE SOFTWARE. Análise dos Requisitos de Software

Ferramenta para Geração de Código a partir da Especialização do Diagrama de Classes

Engenharia de Software

Um Framework para Desenvolvimento de Aplicações Móveis Orientadas a Serviços

Análise e Projeto de Sistemas. O que é modelagem. O que é modelagem. Tripé de apoio ao desenvolvimento. Notação: UML. Ferramenta: Rational Rose.

Orientação a Objetos. Programação em C++

Implementação de Classe e Auto-Relacionamento em Java

FACULDADE PROJEÇÃO ESCOLA DE TECNOLOGIA

Transcrição:

OO Engenharia Eletrônica 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++,...) Prof. Dr. Jean Marcelo SIMÃO DAELN / UTFPR

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

Engenharia de Software OO Exemplos de Técnicas 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. 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. 3

Engenharia de Software OO Exemplos de Ferramentas Levantamento de Requisitos Análise e Projeto Implementação ou Codificação Testes Textos, Diagramas de Casos de Uso da UML etc 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++. 4

Bibliografias Bibliografias: - Pressman, R. S. Software Engineering A Practitioner s Approach. 6th Edition McGraw Hill (Higher Education). 2005. ISBN 0-07-28538-2. - RUMBAUGH, J.; JACOBSON, I.; BOOCH, G. The Unified Software Development Process. st Edition. Addison-Wesley. 2005. ISBN 0-200 20-5769-2. - RUMBAUGH, J.; JACOBSON, I.; BOOCH, G. The Unified Modeling Language Reference Manual. 2nd Edition. Addison-Wesley. 2005. ISBN 0-320 32-26797-4. - Bezerra, E. Princípios de Análise e Projeto de Sistemas com UML. Editora Campus. 2003. ISBN 85-352-032-6. Outras bibliografias: - GAMMA, E.; HELM, R.; Johnson, R.; Vlissides, J. Design Patterns: Elements of Reusable Object-oriented Software. Addison Wesley Longman, 995. - Largman, G. Applying UML and Patterns An Introduction to Object-Oriented Analysis and Design. Prentice Hall. 998. ISBN 0-3-748880-7. 5

Unified Modeling Language (UML) Diagrama de Classe 6

Análise-Projeto / Implementação Uma classe em UML Uma classe em C++ #diap: int #mesp: int #anop: int #idadep: int #nomep: char[30] #id: int Pessoa <<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 #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 7

Diagrama de Classe (de Análise ) - Herança #diap: int #mesp: int #anop: int #idadep: int #nomep: char[30] #id: int Pessoa RA = Registro Acadêmico <<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 Professor <<create>>-professor(diana: int, mesna: int, anona: int, nome: char) <<create>>-professor() <<destroy>>-professor() +OndeTrabalho(): void +QualTrabalho(): void 8

Diag. Classes ( Análise ) Agregação (Fraca -Simples) Disciplina -nome: char[50] -area_conhecimento: char[50] <<create>>-disciplina(i: int, na: int, ac: char) <<create>>+disciplina() <<destroy>>-disciplina()..*..* <<create>>+() 9

Diagrama de Classes ( Análise ) - Associação Disciplina -nome: char[50] -area_conhecimento: char[50] <<create>>-disciplina(i: int, na: int, ac: char) <<create>>+disciplina() <<destroy>>-disciplina()..* Cursar..* <<create>>+() 0

Diagrama de Classes ( Análise ) Papeis associativos Disciplina -nome: char[50] -area_conhecimento: char[50] <<create>>-disciplina(i: int, na: int, ac: char) <<create>>+disciplina() <<destroy>>-disciplina() +Cursada..* Cursar +Cursa..* <<create>>+()

Realização Relação entre Relações Disciplina -nome: char[50] -area_conhecimento: char[50] <<create>>-disciplina(i:int, na:int, ac:char) <<create>>+disciplina() <<destroy>>-disciplina()..*..* +Cursada +Cursa..* Cursar..* <<create>>+() 2

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

Diagrama de Classe Associação Direcional -nome: char +setnome(n: char): void +getnome(): char FILIAR -nome: char +setnome(n: char): void +getnome(): char 4

Diagrama de Classe Associação Direcional <<create>>+() FILIAR -nome: char[00] +setnome(n: char): void +getnome(): char 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. 5

Diagrama de Classe (de Análise ) Associação Bidirecional <<create>>+()..* FILIAR -nome: char[00] +setnome(n: char): void +getnome(): char 6

Diagrama de Classe (de Análise ) Associação Bidirecional com Papeis <<create>>+() +estuda..* FILIAR +gerencia_estudo -nome: char[00] +setnome(n: char): void +getnome(): char 7

Diagrama de Classe (de Projeto ) Classe de Associação +set(d: *): void +get(): * +estudande..* FILIAR +gerencia_estudos -nome: char[00] +... +objtls: Lista +inclua(a: *): void +...() -quant: int -nome: char Lista +Lista(nome: char) ~Lista() +getquant(): int +setquant(int q): void +incluas(a: *): void 8

Diagrama de Classe (de Projeto ) Composição (Agregação Forte) +set(d: *): void +get(): * +estudande..* FILIAR +gerencia_estudos -nome: char[00] +... +objtls: Lista +inclua(a: *): void +...() -quant: int -nome: char Lista +Lista(nome: char) ~Lista() +getquant(): int +setquant(int q): void +incluas(a: *): void 9

Diagrama de Classe (de Projeto ) Esteriótipo +conhece +estudande +set(d: *): void..* +get(): * +listado..* CONHECER FILIAR +gerencia_estudos -nome: char[00] +... +objtls: Lista +inclua(a: *): void +...() ESTAR +lista 0.. -quant: int -nome: char Lista +Lista(nome: char) ~Lista() +getquant(): int +setquant(int q): void +incluas(a: *): void 20

Diagrama de Classe (de Projeto ) Realização +conhece +estudande..* +set(d: *): void +get(): * +listado..* CONHECER FILIAR +gerencia_estudos -nome: char[00] +... +objtls: Lista +inclua(a: *): void +...() +conhecido CONHECER 0.. +conhece 0..* El ESTAR +lista 0.. -quant: int -nome: char Lista +Lista(nome: char) ~Lista() +getquant(): int +setquant(int q): void +incluas(a: *): void 2

Diagrama de Classe (de Projeto ) Refinando Realização Relação Reflexiva +conhece +estudande +set(d: *): void..* +get(): * CONHECER FILIAR +gerencia_estudos -nome: char[00] +... +objtls: Lista +inclua(a: *): void +...() CONHECER 0.. +conhece +conhecido 0.. Conhecer Próximo El 0.. 0.. 0..*..* +listado Conhecer Anterior ESTAR 0.. Conhecer Primeiro 0.. 0.. Conhecer Atual 0.. 0.. 0.. +lista -quant: int -nome: char Lista +Lista(nome: char) ~Lista() +getquant(): int +setquant(int q): void +incluas(a: *): void 22

Diagrama de Classe (de Projeto ) Projeto Eliminando Análise - +set(d:*):void +get(): * +conhece CONHECER -nome: char[00] +... +objtls: Lista +inclua(a: *): void +...() CONHECER +conhecido 0.. +conhece 0.. Conhecer Próximo El 0..* 0.. 0.. Conhecer Anterior..* +listado ESTAR 0.. Conhecer Primeiro 0.. 0.. Conhecer Atual 0.. 0.. +lista 0.. -quant: int -nome: char Lista +Lista(nome: char) ~Lista() +getquant(): int +setquant(int q): void +incluas(a: *): void 23

Diagrama de Classe (de Projeto ) Projeto Eliminando Análise - 2 +conhece +set(d: *): void +get(): * CONHECER -nome: char[00] +... +objtls: Lista +inclua(a: *): void +...() +conhecido CONHECER Lista 0.. +conhece Conhecer Próximo 0.. 0..* El 0.. 0.. 0.. Conhecer Anterior Conhecer Primeiro 0.. Conhecer Atual 0.. 0.. 0.. -quant: int -nome: char +Lista(nome: char) ~Lista() +getquant(): int +setquant(int q): void +incluas(a: *): void 24

Diagrama de Classe (de Projeto ) Projeto Eliminando Análise - 3 +conhece +set(d: *): void +get(): * CONHECER -nome: char[00] +... +objtls: Lista +inclua(a: *): void +...() +conhecido 0.. Conhecer Próximo CONHECER 0..+conhece El 0.. 0.. 0.. Conhecer Primeiro 0.. 0.. Conhecer Atual 0.. 0.. Conhecer Anterior -quant: int -nome: char Lista +Lista(nome: char) ~Lista() +getquant(): int +setquant(int q): void +incluas(a: *): void 25

Diagrama de Classe (de Análise ) Composição (Agregação Forte) -nome: char[00] +setnome(n: char): void +getnome(): char..* Disciplina -nome: char[50] -area_conhecimento: char[50] <<create>>-disciplina(i: int, na: int, ac: char*) <<create>>+disciplina() <<destroy>>-disciplina() 26

Diagrama de Classe (de Projeto ) Composição (Agregação Forte) -nome: char[00] +... +objtls: Lista +inclua(a: *): void +...() Conhecer..* Disciplina -nome: char[00] -area_conhecimento: char[00] <<create>>-disciplina(i: int, na: int, ac: char*) <<destroy>>-disciplina() +set(d: *): void +get(): * +set(a: ): void +listes2(): void CONHECER 0..* 0..* CONHECER PROXIMO..* ListaDisciplina ElDisciplina 0..* 0..* 0..* 0..* CONHECER PRIMEIRO 0..* 0..* CONHECER ATUAL 0..* CONHECER ANTERIOR 27