Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Curitiba PLANO DE ENSINO CURSO BACHARELADO EM SISTEMAS DE INFORMAÇÃO MATRIZ BSI FUNDAMENTAÇÃO Resolução nº 82/08-COGEP de 12 de setembro de 2008 LEGAL DISCIPLINA/UNIDADE CURRICULAR FUNDAMENTOS DE PROGRAMAÇÃO 2 CÓDIGO PERÍODO IF62C 2o CARGA HORÁRIA horas) AT AP Total 30 30 60 AT: Atividades Teóricas, AP: Atividades Práticas. PRÉ-REQUISITO EQUIVALÊNCIA IF61C - OBJETIVOS Dotar o aluno de conhecimentos aprofundados sobre o paradigma de orientação a objetos ressaltando a utilização dos mecanismos de OO, programação orientada a eventos, programação concorrente e utilização de componentes e APIs. Introduzir princípios de projeto de software e posicionar as atividades de projeto e implementação no processo de desenvolvimento de software. Desenvolver o raciocínio de como abordar problemas computacionais usando estes conhecimentos e exercitar a aplicação dos mesmos por meio da utilização da linguagem de programação Java, de um ambiente integrado de desenvolvimento e de bibliotecas de componentes. EMENTA Estratégias Algorítmicas de Resolução de Problemas. Projeto orientado a objetos. Conceitos de padrões de projeto e uso de APIs. Ambientes Integrados de Desenvolvimento e de Prototipação. CONTEÚDO PROGRAMÁTICO ITEM 1 2 3 EMENTA CONTEÚDO Revisão de conceitos básicos de orientação a objetos: abstração e encapsulamento, classes, objetos, atributos e 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 Projeto orientado a Objetos escopo Sobrecarga de métodos e operadores e Polimorfismo Princípio da substituição e vinculação dinâmica. Classes abstratas. Classes aninhadas. Gabaritos (template). Engenharia de software e suas fases: ênfase nas fases de projeto e implementação Diagrama de classes em UML Implementação de métodos e/ou relacionamentos de objetos por meio de componentes, tais como listas, filas e pilhas. Recursividade. Programação orientada a eventos. Estratégias Algorítmicas de Resolução de Conceitos de estados e eventos. Problemas Comunicação entre objetos via eventos. Programação concorrente: linhas de Execução (Threads). Problemas de concorrência: sincronização de threads, leitura/escrita concorrente em objetos compartilhados, deadlocks, produtor-consumidor. Conceitos de padrões de projetos e APIs Conceito geral de padrões. 4 Conceito de padrões de projeto. Exemplos de padrões de Projeto (e.g. padrões de Gamma). Aplicações de Padrões de Projeto Conceito de Application Programming Interface (API) e exemplos, tais como: acesso a recursos e serviços do sistema operacional, construção de interfaces gráficas e comunicação em rede. Configuração do ambiente de desenvolvimento. Programação orientada a objetos gráficos (janelas, botões, etc.) e a eventos. Ambiente de programação ‘visual’ (Wizard & Plug and Play). Integração de ferramentas CASE e ambientes de desenvolvimento. Noções de prototipagem rápida em ambientes de de desenvolvimento. Configuração de um ambiente integrado de desenvolvimento Java. Programação de aplicações em ambiente integrado de desenvolvimento Java Uso básico de UML, principalmente, notação de classes e seus relacionamentos, utilizando uma ferramenta case integrável ao ambiente de desenvolvimento. Ambientes Integrados Desenvolvimento e Prototipação PROFESSOR ANO/SEMESTRE xxxx/xx AT AP TURMA CARGA HORÁRIA (aulas) APS AD APCC Total AT: Atividades Teóricas, AP: Atividades Práticas, APS: Atividades Práticas Supervisionadas, AD: Atividades a Distância, APCC: Atividades Práticas como Componente Curricular. DIAS DAS AULAS PRESENCIAIS Dia da semana Segunda Número de aulas no semestre (ou ano) Terça Quarta Quinta PROGRAMAÇÃO E CONTEÚDOS DAS AULAS (PREVISÃO) Dia/Mês ou Semana Conteúdo das Aulas ou Período Sexta Sábado Número de Aulas PROCEDIMENTOS DE ENSINO AULAS TEÓRICAS Descrição resumida dos métodos, das técnicas e dos recursos que o professor utilizará. Descrição detalhada dos métodos, das técnicas e dos recursos que o professor utilizará nas aulas para efetivar a aprendizagem dos alunos, visando alcançar os objetivos propostos na disciplina/unidade curricular. Se o professor utilizar tecnologias de informação e comunicação como ferramentas de apoio ao processo de ensino aprendizagem, deverá relacioná-las. AULAS PRÁTICAS Descrição resumida dos métodos, das técnicas e dos recursos que o professor utilizará. Descrição detalhada dos métodos, das técnicas e dos recursos que o professor utilizará nas aulas para efetivar a aprendizagem dos alunos, visando alcançar os objetivos propostos na disciplina/unidade curricular. Se o professor utilizar tecnologias de informação e comunicação como ferramentas de apoio ao processo de ensino aprendizagem, deverá relacioná-las. ATIVIDADES PRÁTICAS SUPERVISIONADAS Descrição detalhada dos métodos, das técnicas e dos recursos que o professor utilizará nas atividades práticas supervisionadas para efetivar a aprendizagem dos alunos, visando alcançar os objetivos propostos na disciplina/unidade curricular. ATIVIDADES A DISTÂNCIA Descrição detalhada dos métodos, das técnicas e dos recursos que o professor utilizará nas atividades a distância para efetivar a aprendizagem dos alunos, visando alcançar os objetivos propostos na disciplina/unidade curricular. O professor deve relacionar as tecnologias de informação e comunicação utilizadas como ferramentas de apoio ao processo de ensino aprendizagem. ATIVIDADES PRÁTICAS COMO COMPONENTE CURRICULAR Descrição detalhada dos métodos, das técnicas e dos recursos que o professor utilizará nas atividades práticas como componente curricular para efetivar a aprendizagem dos alunos, visando alcançar os objetivos propostos na disciplina/unidade curricular. PROCEDIMENTOS DE AVALIAÇÃO Conforme regulamento didático pedagógico em vigor. Conforme regulamento didático pedagógico em vigor. REFERÊNCIAS Referencias Básicas: DEITEL, Harvey M.; DEITEL, Paul J. (Autor). Java, como programar. 6. ed. São Paulo, SP: Pearson Prentice Hall, 2005. 1110 p.1 CD-ROM ISBN 85-7605-019-6 GAMMA, Erich; JOHNSON, Ralph; HELM, Richard; VLISSIDES, John. Padrões de projeto: soluções reutilizáveis de software orientado a objetos . Porto Alegre: Bookman, 2005 364 p. ISBN 8573076100 BARNES, David & KÖLLING, Michael. Programacão Orientada a Objetos com Java. São Paulo, SP: Pearson Prentice Hall, 2004. Referências Complementares: SIERRA, Kathy; BATES, Bert. Use a cabeça!: Java. 2.ed. Rio de Janeiro: Alta Books, 2007. 470 p. : ISBN 9788576081739 ECKEL, Bruce. Thinking in Java. 4th. ed. Upper Saddle River: Prentice-Hall, 2007. 1482 p. ; ISBN 0-13027363-5 LARMAN, Craig. Utilizando UML e padrões: uma introdução à análise e ao projeto orientados a objetos e ao desenvolvimento iterativo. 3. ed. Porto Alegre: Bookman, 2007. 695 p. : ISBN 85-363-0358-1 GOETZ, Brian. Java concurrency in practice. Upper Saddle River, NJ.: Addison-Wesley, c2006. 403 p. ISBN 0321349601 DEITEL, H. M, DEITEL P.J. C++ Como Programar. 3. ed. Porto Alegre: Bookman, 2001. ORIENTAÇÕES GERAIS Demais orientações relevantes para a disciplina/unidade curricular. Assinatura do Professor Assinatura do Coordenador do Curso