plano de ensino - dainf.ct.utfpr.edu.brjeansimao/programacaoavancada/plano_de... · plano de ensino...

5
Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Curitiba - Central PLANO DE ENSINO CURSO Programa de Pó-graduação em Computação Aplicada – Mestrado Profissional (PPGCA) Curso-Programa de Pós-graduação em Engenharia Elétrica e Informática Industrial (CPGEI). MATRIZ Primeira FUNDAMENTAÇÃO LEGAL (Resolução do COEPP que aprovou a matriz curricular do curso e, se houver, resoluções posteriores relativas à disciplina/unidade curricular) - SA DISCIPLINA/UNIDADE CURRICULAR CÓDIGO FASE CARGA HORÁRIA (horas) Programação Avançada CABS002 (PPGCA) EC07PA120 (CPGEI) 2 o. Teórica Prática Total 22 23 45 PRÉ-REQUISITO Programação Procedimental (preferencialmente em linguagem C). EQUIVALÊNCIA Relativo – depende de análise pontual de cada ementa. OBJETIVOS Instruir o aluno a Programação Orientada a Objetos (POO), a Eventos, a Componentes, a Interfaces de Programação de Aplicação (Application Programming Interafaces APIs), a Projeto e ao enquadramento do Projeto/Implementação no Processo de Desenvolvimento de Logiciaria (i.e. software). Desenvolver o raciocínio na abordagem de problemas computacionais usando este ferramental. Utilizar os mecanismos deste ferramental utilizando a linguagem de Programação Orientada a Objeto C++ e seus adendos, bem como a sua conexão para com a Linguagem de Unificada de Modelagem (Unified Modeling Language - UML), conceitualmente e tecnicamente, este via ferramenta de Eng. de Software/Sistema Auxiliada por Computador (Computer Aided Software/System Engineering - C.A.S.E.). EMENTA Programação Orientada a Objetos. Programação Orientada a Componentes - Standard Template Library. Programação Orientada a Padrões. Programação Orientada a Eventos. Programação Visual (Formulários e Objetos Gráficos). Programação Concorrente (Linhas de Execução ou Threads). CONTEÚDO PROGRAMÁTICO ITEM EMENTA CONTEÚDO 1 Programação Orientada a Objetos (POO) - Engenharia de software e suas fases: ênfase nas fases de projeto e implementação. - Conceitos básicos de orientação a objetos: abstração e encapsulamento, classes, objetos, atributos e métodos (em diagramas de classes UML e em linguagem de Programação OO C++) - Recursividade de métodos. - Gestão do ciclo de vida dos objetos: construtores e destrutores, referência a objetos, relacionamentos entre objetos, persistência - Herança e herança múltipla; Propriedades de classes, atributos e métodos: visibilidade e escopo; Sobrecarga de métodos e operadores e Polimorfismo; Princípio da substituição (ligação dinâmica). - Classes abstratas, Classes aninhadas, Gabaritos (template) - Programação em Ambiente C++ com aplicações console; - Projeto UML (Diagrama de Classes particularmente) em Ferramenta C.A.S.E conectável ao Ambiente C++; 2 Programação Orientada a Componentes Standard Template - Gabaritos (template) - Implementação de métodos e/ou relacionamentos de objetos por meio de componentes, tais como listas, filas e pilhas.

Upload: phamhanh

Post on 18-Nov-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Ministério da Educação

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Campus Curitiba - Central

PLANO DE ENSINO

CURSO

Programa de Pó-graduação em Computação Aplicada – Mestrado Profissional (PPGCA) Curso-Programa de Pós-graduação em Engenharia Elétrica e Informática Industrial (CPGEI).

MATRIZ Primeira

FUNDAMENTAÇÃO LEGAL (Resolução do COEPP que aprovou a matriz curricular do curso e, se houver, resoluções posteriores relativas à disciplina/unidade curricular) - SA

DISCIPLINA/UNIDADE CURRICULAR CÓDIGO FASE CARGA HORÁRIA (horas)

Programação Avançada CABS002 (PPGCA)

EC07PA120 (CPGEI) 2o.

Teórica Prática Total

22 23 45

PRÉ-REQUISITO Programação Procedimental (preferencialmente em linguagem C).

EQUIVALÊNCIA Relativo – depende de análise pontual de cada ementa.

OBJETIVOS Instruir o aluno a Programação Orientada a Objetos (POO), a Eventos, a Componentes, a Interfaces de Programação de Aplicação (Application Programming Interafaces – APIs), a Projeto e ao enquadramento do Projeto/Implementação no Processo de Desenvolvimento de Logiciaria (i.e. software). Desenvolver o raciocínio na abordagem de problemas computacionais usando este ferramental. Utilizar os mecanismos deste ferramental utilizando a linguagem de Programação Orientada a Objeto C++ e seus adendos, bem como a sua conexão para com a Linguagem de Unificada de Modelagem (Unified Modeling Language - UML), conceitualmente e tecnicamente, este via ferramenta de Eng. de Software/Sistema Auxiliada por Computador (Computer Aided Software/System Engineering - C.A.S.E.).

EMENTA Programação Orientada a Objetos. Programação Orientada a Componentes - Standard Template Library. Programação Orientada a Padrões. Programação Orientada a Eventos. Programação Visual (Formulários e Objetos Gráficos). Programação Concorrente (Linhas de Execução ou Threads).

CONTEÚDO PROGRAMÁTICO

ITEM EMENTA CONTEÚDO

1 Programação Orientada

a Objetos (POO)

- Engenharia de software e suas fases: ênfase nas fases de projeto e implementação.

- Conceitos básicos de orientação a objetos: abstração e encapsulamento, classes, objetos, atributos e métodos (em diagramas de classes UML e em linguagem de Programação OO C++)

- Recursividade de métodos.

- Gestão do ciclo de vida dos objetos: construtores e destrutores, referência a objetos, relacionamentos entre objetos, persistência

- Herança e herança múltipla; Propriedades de classes, atributos e métodos: visibilidade e escopo; Sobrecarga de métodos e operadores e Polimorfismo; Princípio da substituição (ligação dinâmica).

- Classes abstratas, Classes aninhadas, Gabaritos (template)

- Programação em Ambiente C++ com aplicações console;

- Projeto UML (Diagrama de Classes particularmente) em Ferramenta C.A.S.E conectável ao Ambiente C++;

2

Programação Orientada

a Componentes –

Standard Template

- Gabaritos (template)

- Implementação de métodos e/ou relacionamentos de objetos por meio de componentes, tais como listas, filas e pilhas.

Library - Conceito de Application Programming Interface (API) e exemplos: como API de acesso a recursos e serviços do sistema operacional, construção de interfaces gráficas e comunicação em rede

- Programação em Ambiente C++ com suporte da STL (Standard Template

Library).

- Programação em Ambiente C++ com suporte a APIs.

3 Programação Orientada

a Padrões.

- Conceito Geral de Padrões;

- Conceito de Padrões de Projeto;

- Exemplos de Padrões de Projeto (e.g. Padrões Gang of four);

- Aplicações de Padrões de Projeto;

4 Programação Orientada

a Eventos

- Configuração do Ambiente de Desenvolvimento; - Conceitos de Programação Orientada a Eventos; - Conceitos de Estados e Eventos; - Comunicação entre Objetos via Eventos.

- Programação Orientada a Objetos Gráficos (janelas, botões, etc.) e a Eventos;

5 Programação Visual Formulários e Objetos Gráficos).

- Programação Orientada a Objetos Gráficos (janelas, botões, etc.) e a Eventos;

- Programação em Ambiente C++ com suporte a Objetos Gráficos e Programação Visual.

- Ambiente de Programação ‘Visual’ ou “Ferramenta Feiticeira” (Wizard

Tool); - Noções de Prototipagem Rápida em Ambientes de Desenvolvimento ou

Rapid Application Development (RAD). - Ferramentas Engenharia de Software/Sistema Auxiliada por Computador ou

Computer Aided Software/System Engineering (C.A.S.E.). - Integração de Ferramenta C.A.S.E. e Ambientes de Desenvolvimento POO;

6

Programação Concorrente (Linhas de Execução ou Threads).

- Programação Concorrente: Linhas de Execução (Threads); - Programação Concorrente OO: Linhas de Execução (Threads); - Problemas de Concorrência: Sincronização de Threads, Leituras

Concorrentes em Objetos Compartilhados, Bloqueios Mortais (Deadlocks). - Produtor-Consumidor.

PROFESSOR TURMA

Prof. Dr. Jean Marcelo SIMÃO & Prof. Dr. Robson Ribeiro Linhares S11

ANO / FASE CARGA HORÁRIA (aulas)

2016 / 02 AT AP APS AD Total

22 23 0 0 45 AT: Atividades Teóricas, AP: Atividades Práticas, APS: Atividades Práticas Supervisionadas, AD: Atividades a Distância.

DIAS DAS AULAS PRESENCIAIS Dia da semana Segunda Terça Quarta Quinta Sexta Sábado

Número de aulas no semestre 10

PROGRAMAÇÃO E CONTEÚDOS DAS AULAS (PREVISÃO) Dia/Mês Conteúdo das Aulas N. Aulas

1.

07/06

Terça-feira

Introdução. Conceitos básicos de OO em C++: classes, objetos, atributos e métodos. Ciclo de vida dos objetos: construtores e destrutores, referência e ponteiros a objetos, relacionamentos. Aplicações console (fluxos de entrada/saída). Diretivas de pré-compilação e artifícios para evitar inclusões recursivas em C++. Pedido Trabalho.

4

2.

14/06

Terça-feira

Eng. de software e suas fases: ênfase em projeto/implementação. Relações entre Objetos-Classes em C++ e UML: Associação, Agregação e Herança. Relações um para um, um para n e n para n em classes C++ e UML. Relacionamentos entre objetos via listas encadeadas elementares e bem formadas. Coação de ponteiros, operador this e alocação dinâmica de memória em C++ (new e delete). Princípios de alta coesão e baixo acoplamento.

4

PROGRAMAÇÃO E CONTEÚDOS DAS AULAS (PREVISÃO) Dia/Mês Conteúdo das Aulas N. Aulas

3.

21/06

Terça-feira

Diag. de Classes UML para análise-projeto e correspondência com código C++: classes, objetos, associação, agregação/composição e herança. Ferramenta C.A.S.E. Arquivos de fluxos (ofstream, ifstream, ...) de texto e binários. Persistência de objetos, incluindo seus relacionamentos. Sobrecarga de métodos e operadores (unários, parâmetro à direita, parâmetro à esquerda). Objetos, retorno e métodos const. Gabaritos (template) de métodos e de classes. Discussão sobre os Trabalhos Propostos.

4

4.

28/06

Terça-feira

Recursividade de métodos. Métodos virtuais, puros ou não. Ligação dinâmica. Polimorfismo. Classe abstrata. Herança múltipla. Namespace. Classes aninhadas. Estáticos. Classe String. Biblioteca Padrão de Gabaritos (STL – Standard Template Library). - Vector e List. Implementação de relacionamentos por meio de componentes (STL). Exemplos de outros contêineres da STL: - Filas/Bifilas/Filas de Prioridade, Pilhas. - Conjuntos/Multi-Conjuntos. Mapas/Multi-Mapas.

4

5.

05/07

Terça-feira

Realização da 1ª Prova (17:50 à 19:50). Estado de objetos e eventos. Comunicação entre objetos via eventos. Ambiente de prog. visual (Wizard & Plug and Play). Noções de prototipagem rápida em amb. de desenvolvimento. Prog. Orientada a eventos e visual (objetos gráficos) em ambiente C++.

4

12/07 Férias docentes 0

19/07 Férias docentes 0

26/07

Férias docentes 0

6.

02/08

Terça-feira

Contra-correção de prova. Seminários sobre os Trabalhos Individuais. (Cada aluno em uma dezena de minutos apresentará o estado de desenvolvimento de seu trabalho. A apresentação deveria trazer requisitos e um diagrama de classes.)

5

7.

09/08

Terça-feira

Application Programming Interface (API). Exemplos de API para interfaces gráficas e acesso a recursos e serviços do S.O. (e.g. Threads). Mensagens entre Threads. Problemas de concorrência: produtor-consumidor. Problemas de concorrência: sincronização de threads, leituras concorrentes em objetos compartilhados, deadlocks. Programação concorrente: linhas de Execução (Threads) - ênfase em Pthread-Posix. Threads e a Orientação a Objetos - ênfase em Pthread-Posix.

5

PROGRAMAÇÃO E CONTEÚDOS DAS AULAS (PREVISÃO) Dia/Mês Conteúdo das Aulas N. Aulas

8.

16/08

Quarta-feira

Programação em Ambiente C++ com suporte a APIs. Programação concorrente: linhas de Execução (Threads) - ênfase em C-Run-Time e Win32 API. Threads e a Orientação a Objetos - C-Run-Time e Win32 API. Exemplos de APIs para recursos e serviços do Sistema Operacional e para comunicação em rede. Introdução a Padrões e Padrões de Projeto. Revisão do Ciclo de Eng. de Software e Padrões de Projeto. Exemplos de Padrões de Projeto e suas Aplicações (padrões GOF).

5

9.

23/08

Quarta-feira

Realização da 2ª Prova (17:50 à 19:40). Exemplos de Padrões de Projeto e suas Aplicações (padrões GOF). Eventual Apresentação de Trabalhos. (20:00 – 22:00)

5

10.

30/08

Quarta-feira

Apresentação de Trabalhos. Obs.: Trazer ao menos diagrama de classes impresso, demais diagramas e tabela de conceitos utilizados e não utilizados. . Entrega de Trabalhos (forma de artigo-relatório conforme modelo em site da disciplina).

5

06/09 Fim da 2ª Fase. Dia 19/09/2016 (pela manhã) – data limite para o Envio do Artigo-Relatório e Artefatos (por e-mail).

0

PROCEDIMENTOS DE ENSINO AULAS TEÓRICAS O Professor efetivará a aprendizagem ministrando as aulas e os conteúdos corretamente. O Professor efetivará a aprendizagem ministrando as aulas e os conteúdos corretamente o que inclui o estímulo a atenção, a relação com a aplicação prática, a abertura a questionamentos, a questionamentos para turma. Enfim, utilizar-se-ão os bons princípios relativos ao ensino. AULAS PRÁTICAS O Professor efetivará a aprendizagem com atividades práticas. O Professor efetivará a aprendizagem com atividades prática como a demanda e correção de exercícios e a demanda de um trabalho prático que se constituirá na implementação de software de certa complexidade (e.g., algum jogo). ATIVIDADES PRÁTICAS SUPERVISIONADAS Não há APSs. ATIVIDADES A DISTÂNCIA Não há aulas à distância.

PROCEDIMENTOS DE AVALIAÇÃO - As avaliações consistirão de 2 provas escritas e 1 trabalho prático. - As avaliações consistirão de 2 provas escritas e 1 trabalho prático. - O trabalho será um software orientados a objetos (normalmente em C++). - A 1a. e 2a. provas constituirão juntas uma primeira nota (cada qual compondo 50% dela), enquanto que o

trabalho constituirá a segunda nota. - A média final será calculada pela média aritmética das duas notas. - Casos omissos deverão ser analisados pelo coordenador do curso.

REFERÊNCIAS Referencias Básicas:

- DEITEL, H. M.; DEITEL, P. J. C++ Como Programar. 3ª Edição. Bookman. 2001. - STROUSTRUP, B. The C++ Programming Language. 3rd Edition. Addison-Welsey. 1997. - PRESSMAN, R. S. Software Engineering – A Practitioner’s Approach. 6th Edition McGraw Hill (Higher

Education). 2005. ISBN 0-07-285318-2. - GAMMA, E.; HELM, R.; Johnson, R.; Vlissides, J. Design Patterns: Elements of Reusable Object-

oriented Software. Addison Wesley Longman, 1995. - SIMÃO, J. M. Fundamentos de Programação 2 – C++. Página de Internet:

http://www.pessoal.utfpr.edu.br/jeansimao/Fundamentos2/Fundamentos2.htm.

Referências Complementares:

- SEBESTA, R. W. Conceitos de Linguagens de Programação. 5ª Edição. Bookman 2003. - HORSTMANN, C. Conceitos de Computação com o Essencial de C++, 3ª edição, Bookman, 2003, ISBN

0-471-16437-2. - RUMBAUGH, J.; JACOBSON, I.; BOOCH, G. The Unified Modeling Language Reference Manual.

2nd Edition. Addison-Wesley. 2005. ISBN 0-321-26797-4. - RUMBAUGH, J.; JACOBSON, I.; BOOCH, G. The Unified Software Development Process. 1st Edition.

Addison-Wesley. 2005. ISBN 0-201-57169-2. - LARGMAN, G. Applying UML and Patterns – An Introduction to Object-Oriented Analysis and

Design. Prentice Hall. 1998. ISBN 0-13-748880-7. - BEZERRA, E. Princípios de Análise e Projeto de Sistemas com UML. Editora Campus. 2003. ISBN 85-

352-1032-6.

ORIENTAÇÕES GERAIS Freqüência mínima às aulas: 75% do total de aulas ministradas.

Assinatura do Professor Assinatura do Coordenador do Curso