UNIVERSIDADE DO ESTADO DE SANTA CATARINA CENTRO DE CIÊNCIAS TECNOLÓGICAS DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO PLANO DE ENSINO DEPARTAMENTO: Ciências da Computação DISCIPLINA: Linguagem de Programação II CARGA HORÁRIA TOTAL : 60 SIGLA: LPG II TEORIA: 36 PRÁTICA: 24 CURSO(S): Tecnologia em Sistemas de Informação SEMESTRE/ANO: 01/2011 PRÉ-REQUISITOS: LPG I OBJETIVO GERAL DA DISCIPLINA Capacitar os estudantes a projetar e implementar programas simples de computadores segundo a perspectiva de Orientação a Objetos. Enfoque nos conceitos de Orientação a Objetos, modelagem de sistemas (empregando a linguagem UML) e na linguagem Java. EMENTA: Conceitos de orientação a objetos: Classes, objetos, herança, polimorfismo, ligação dinâmica, métodos e mensagens, encapsulamento e reuso. Componentização. Classes abstratas e interfaces, herança múltipla; Tratamento de exceções. Noções de projeto orientado a objetos. Generalização e especialização. OBJETIVOS ESPECÍFICOS/DISCIPLINA: APRESENTAR os principais conceitos de Orientação a Objetos (O.O.); APRESENTAR a linguagem UML (Unified Modeling Language) para modelagem de programas e sistemas; APRESENTAR a linguagem de programação Orientada a Objetos Java; EXPRESSAR conceitos de O.O. através da linguagem UML (diagrama de classes); MODELAR programas e sistemas na ótica de Orientação a Objetos expressando através da linguagem UML (diagrama de classes); IMPLEMENTAR programas e sistemas na linguagem Java conforme modelagem (UML) prévia. CRONOGRAMA DE ATIVIDADES: C.H. CONTEÚDOS PROGRAMÁTICOS 1. Apresentação da Disciplina 8h 1.1. Plano de Ensino 1.1.1. Ementa 1.1.2. Objetivo 1.1.3. Avaliações 1.1.4. Referências Bibliográficas 12h 2. Introdução à Programação Orientada a Objetos 2.1. O que é um programa de Computador 2.2. O que são modelos? Exemplos de Modelos. 2.3. O que é programação Orientada a Objetos (POO) 2.4. Encapsulamento 2.5. O que são Classes, Objetos, Referências e Métodos 2.6. Orientação a Objetos é necessária? 3. UML (Unified Modeling Language) 3.1. Introdução 4.1.1. Porque modelar? 3.2. Modelagem Estrutural Básica 3.2.1. Classes AVALIAÇÃO Participação Freqüência Prova #1 Exercícios Participação Freqüência Prova #1 3.2.2. 3.2.3. 3.2.4. 3.2.5. 8h 4h 8h Relacionamentos Mecanismos comuns Diagramas Diagramas de Classes (D. de Classes) 4. Criando Classes em Java 4.1. Introdução 4.2. Sintaxe Básica de criação de classes em Java 4.3. Atributos de classes em Java 4.3.1. Usando dados nativos de Java 4.3.2. Declarando atributos de classes em Java 4.3.3. Que tipos de dados devem ser utilizados? 4.4. Métodos em classes em Java 4.5. Escopo e Encapsulamento 4.6. Modificadores de acesso 4.7. Expressar atributos, métodos e modificadores de acesso em UML. 5. Elaborando aplicações simples em Java 5.1. Introdução 5.2. Desenvolvendo aplicações em Java 5.3. A palavra-chave new 5.4. A palavra-chave null 5.5. Modelar classes e aplicações mais interativas (UML) 5.6. Escrever classes e aplicações mais interativas 6. Construtores e Sobrecarga 6.1. Introdução 6.2. O que são construtores? 6.3. Sobrecarga de métodos 5.3.1. A palavra-chave this 5.3.2. Cuidados com sobrecarga de métodos 6.4. Expressar construtores em UML 7. Atributos e métodos estáticos 7.1 Introdução 7.2 Atributos estáticos em classes 7.3 Métodos estáticos em classes 7.4 Atributos e métodos estáticos em aplicações 7.5 Fábricas de Objetos 7.6 Expressar atributos e métodos estáticos em UML 8 Estruturas de decisão e controle (Condicionais) 8.1 Introdução 8.2 Operadores Lógicos em Java 8.3 Estruturas de decisão e execução seletiva 8.3.1 As instruções if-else 8.3.2 O operador condicional 8.3.3 A instrução switch 9 Estruturas de decisão e controle (Repetição) 9.1 Estruturas de repetição ou iteração 9.1.1 Contadores 9.1.2 O laço while 9.1.3 O laço do-while 9.1.4 O laço for 9.2 Introdução à recursão 9.3 Introdução à otimização de laços 10 Reutilização de Classes Trabalho #1 Exercícios Participação Freqüência Prova #1 Exercícios Participação Freqüência Prova #1 Exercícios 10.1 Introdução 10.2 Delegação ou composição 10.2.1 Delegação e modificadores de acesso 10.2.2 Delegação e construtores 10.2.3 Expressar composição em UML 10.3 Herança 10.3.1 A palavra-chave super 10.3.2 Sobreposição e ocultação 10.3.3 Polimorfismo 10.3.4 Expressar Delegação, Herança e Polimorfismo em UML Participação Freqüência Prova #2 8h 11 Classes Abstratas e Interfaces 11.1 Introdução 11.2 Classes Abstratas 11.3 Interfaces 11.4 Herança múltipla usando interfaces 11.4.1 Conflitos de Herança Múltipla 11.5 Classes Concretas versus Classes Abstratas 11.6 Classes Abstratas versus Interfaces 11.7 Expressar Classes Abstratas e Interfaces em UML Exercícios Participação Freqüência Prova #2 Trabalho #2 6h 12 Arrays em Java 12.1 Introdução 12.2 Arrays Unidimensionais 11.2.1 Arrays de objetos de classes 12.3 Arrays Multidimensionais 11.3.1 Arrays irregulares 12.4 Processando argumentos da linha de comando Exercícios Participação Freqüência Prova #2 6h 13 Pacotes de classes em Java 13.1 Introdução 13.2 Criando pacotes de classes 13.3 Pacotes e modificadores de acesso 13.3.1 O modificador default 13.3.2 O modificador protected 13.3.3 Sumário dos modificadores de acesso e de suas regras 13.4 Pacotes padrão de Java (API Java) 13.4.1 AWT 13.4.2 Javax Swing Exercícios Participação Freqüência Prova #2 60h Carga horária total teórica/prática – 60h METODOLOGIA PROPOSTA: A disciplina será ministrada através de aulas expositivas da teoria, abordando aplicações desta teoria e resolução de exercícios para fixação. Tais aulas terão uma aplicação prática em laboratório, em paralelo com a exposição dos conceitos. AVALIAÇÃO: O grau de desempenho do aluno será avaliado com base no desenvolvimento das seguintes atividades e com os seguintes critérios: a) 2 provas individuais (cada prova valendo 35% da média); b) 1 ou 2 trabalhos em dupla (30% da média). BIBLIOGRAFIA BASE DA DISCIPLINA HORSTMANN, C. & CORNELL, G.. Core Java 1. São Paulo: Makron Books, 2003. DEITEL, H. M. & DEITEL, P. J.. Java: como programar. Porto Alegre: Bookman, 2003. ECKEL, B.. Thinking in Java. Mindview / Prentice Hall [versão gratuita do e-book] DAMASCENO, J. A. Aprendendo Java. São Paulo: Érica, 2001. RITCHEY, T.. Programando com Java. Rio de Janeiro: Campus, 2000. ARNOLD, GOSLING & HOLMES. The Java Programming Language. Addison Wesley.