240 likes | 365 Views
Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Aula 01 - Conceitos da Orientação a Objetos http://www.ufpa.br/sampaio/bd2003/lpoo. Marco Fagundes. Roteiro. Apresentação Qualidade de Software
E N D
Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Aula 01 - Conceitos da Orientação a Objetos http://www.ufpa.br/sampaio/bd2003/lpoo Marco Fagundes
Roteiro • Apresentação • Qualidade de Software • Paradigmas de Programação • Conceitos da Orientação a Objetos • Programação Orientada a Objetos • Java e Delphi
Apresentação Objetivo Geral do Curso • Motivar, apresentar e exercitar o uso de estilos de programação orientados a objetos a fim de se obter software de qualidade Objetivos Específicos do Curso • Discutir aspectos de qualidade e modularidade de software • Introduzir conceitos de POO • Empregar conceitos OO em Java e Delphi • Fornecer diretrizes para a construção e estruturação de programas em Java e Delphi • Utilizar ambientes de programação em Java e Delphi • Desenvolver uma aplicação de médio porte
Apresentação Relevância e Expectativas • Estudar os conceitos de orientação a objetos e sua utilização no desenvolvimento de sistemas de software • Empregar na prática os conceitos OO • Consolidar conceitos como abstração de dados, modularidade e reusabilidade • Capacitar o aluno no desenvolvimento de software de qualidade • No final do curso o aluno estará apto a participar na implementação de sistemas orientados a objetos usando Java ou Delphi
Apresentação Relação com outras Disciplinas Análise e Projeto de Sistemas Modelo de Análse/Projeto Sistema Implementado em Java ou Delphi LPOO Banco de Dados Projeto/Construção do Banco de Dados
Apresentação Estrutura do Curso • O curso é composto por aulas teóricas e práticas. A estratégia adotada é que a cada duas aulas teóricas será efetuada uma aula prática no laboratórico • O curso é composto por três módulos: • Módulo Fundamentos (12 aulas) • Módulo Avançado (11 aulas) • Módulo Cliente/Servidor (17 aulas) • Módulo Fundamentos • Objetivo: Apresentar conceitos básicos e avançados da orientação a objetos, os ambientes Java e Delphi e sua utilização no desenvolvimento de GUIs • Meta: Desenvolver uma aplicação (Java ou Delphi) com uma GUI oferecendo as operações básicas de cadastro (incluir, excluir, alterar e consultar) utilizando uma estrutura de dados
Apresentação Estrutura do Curso • Módulo Avançado • Objetivo: Apresentar conceitos técnicas para o reuso de código através da herança de classes e recursos para o desenvolvimento de aplicações robustas • Meta: Estender a aplicação desenvolvida no módulo de fundamentos adicionando reuso de código e robustez • Módulo Técnicas Cliente/Servidor • Objetivo: Apresentar os recursos e tecnologias utilizados na conexão da aplicação com Banco de Dados no Java (JDBC) e no Delphi (BDE) • Meta: Estender a aplicação desenvolvida no módulo avançado adicionando persistência dos objeto em um Banco de dados
Apresentação Cronograma
Apresentação Cronograma
Apresentação Cronograma
Apresentação Metodologia de Ensino • A ênfase do curso é em conceitos e técnicas • Java e Delphi serão utilizados como ferramenta prática de apoio • Para ilustrar o paradigma OO • Construir Aplicações OO • Os conceitos estudados serão sedimentados através da implementação incremental de um projeto a ser realizado durante o curso
Apresentação Metodologia de Trabalho • O sistema a ser considerado para estudo no curso é um subconjunto de um sistema de controle acadêmico desenvolvido na UFPE • O escopo considerado envolve a funcionalidade de criação de turmas • A idéia é fornecer um diagrama de classes UML a partir do qual será gerada uma implementação
Apresentação Metodologia de Trabalho • A aplicação será desenvolvida incrementalmente a cada módulo do curso • A aplicação a ser desenvolvida será avaliada segundo emprego do paradigma OO, estruturação, reusabilidade e robustez • A meta é capacitar o aluno a desenvolver a aplicação segundo estrutura abaixo
Apresentação Avaliação • 1 projeto em equipe (de até 3 pessoas) a ser entregue em dois estágio. • No final do Módulo de Avançado (20% da média final) • No final do Módulo de Técnicas (35% da média final) • Três exames escritos explorando aspectos conceituais e de implementação das construções de Java e Delphi. Cada exame será realizado no final de cada módulo e valem 10% da média final • Três exercícios práticos/teóricos individuais/grupo. Cada exercício será efetuado na fase intermediária de cada módulo e terá o valor de 5% da média final
Apresentação Bibliografia(principais) • Livros (Java): • Harvey M. Deitel and Paul J. Deitel. Java: Como Programar. Terceira edição, Bookman, 2000. (Livro texto do curso; exemplos do livro e referências adicionais em http://www.deitel.com/) • Bruce Eckel. Thinking in Java. Terceira Edição, 2002. (Disponível em HTML, no formato PDF, e em HTML de forma compactada) • Livro (Delphi): • Marco Cantu. Dominando o Delphi 5 - A Bíblia. Makron, 2000. • Referências na Internet...
Qualidade de Software • A Crise do Software (Problemas e Causas) • Qualidade de software é um conjunto de propriedades a serem satisfeitas em um determinado grau, de modo que o software satisfaça às necessidades de seus usuários • Atributos de qualidade: Corretude, Eficiência, Manutenibilidade Portabilidade, Reusabilidade, Robustez, Extensibilidade, Integridade e Usabilidade • Os fatores extensibilidade e reusabilidade estão diretamente relacionados à manutenção de sistemas. Estima-se que 70% do custo de software corresponde à manutenção Clareza versus Eficiência • Pensamento a longo prazo e desenvolvimento disciplinado, ao invés de resultados imediatos e de qualquer jeito • Software tem que ser adaptável, flexível, fácil de manter (custos e tempo reduzidos de desenvolvimento e manutenção)
Paradigmas de Programação • O que é Paradigma de Programação? • Modelo, padrão ou estilo de programação suportado por linguagens que agrupam certas características comuns • Paradigma Imperativo • Programas centrados no conceito de um estado (modelado por variáveis) e ações (comandos) que manipulam o estado • Paradigma também denominado de procedural, por incluir subrotinas ou procedimentos como mecanismo de estruturação • Primeiro paradigma a surgir e ainda é o dominante • Paradigma Orientado a Objetos • Não é um paradigma no sentido estrito: é uma subclassificacão do imperativo • A diferença é mais de metodologia quanto à concepção e modelagem do sistema • A grosso modo, uma aplicação é estruturada em módulos (classes) que agrupam um estado e operações (métodos) sobre este
Paradigmas de Programação • Paradigma Funcional • Programas são funções que descrevem uma relação explícita e precisa entre E/S • Estilo declarativo: não há o conceito de estado nem comandos como atribuição • Conceitos sofisticados como polimorfismo, funções de alta ordem e avaliação sob demanda • Aplicação: IA • Paradigma Lógico • Programas são relações entre E/S • Estilo declarativo, como no paradigma funcional • Na prática, inclui características imperativas, por questão de eficiência • Aplicações: SGBD
Conceitos da Orientação a Objetos • Administração da Complexidade • Abstração (dados e procedimentos): Deter em elementos relevantes • Encapsulamento: Separar aspectos externos dos detalhes internos • Modularidade: Módulos coesos e fracamente acoplados • Herança: Compartilhamento de propriedades e comportamento • Conceitos Básicos • Objetos: Elemento que desempenha um papel específico • Classes e Instâncias: Classe descreve um conjunto de objetos com mesmos atributos/operações/relações/semântica • Mecanismos de Estruturação: Ligações e Associações / Composição e Agregação / Herança • Métodos e Mensagens: Métodos implementam operações e Mensagens são usadas para ativar métodos • Persistência: Transcender o tempo/espaço
Conceitos da Orientação a Objetos • Conceitos Avançados • Classes e Operações Abstratas: Classes abstratas organizam características comuns a diversas classes. Operações abstratas possuem múltiplas implementações • Polimorfismo: Um objeto emissor de uma mensagem não precisa conhecer a classe do objeto receptor. As operações possuem a mesma assinatura e semântica • Sobrecarga: As operações não têm necessariamente a mesma semântica e nem precisam conservar sua assinatura • Ligação Dinâmica: A mensagem somente é associada ao método específico da classe do objeto receptor no momento em que é enviada
Conceitos Básicos Objetos Classe e Instâncias Administração de Complexidade Mecanismos de Estruturação Abstração Modularidade Métodos e Mensagens Persistência Encapsulamento Herança Conceitos da Orientação a Objetos • Resumo Conceitos Avançados Classes e Operações Abstratas Polimorfismo • Para uma linguagem ser considerada OO, ela precisa implementar 4 conceitos: • Abstração • Encapsulamento • Herança • Polimorfismo. Ligação Dinâmica Sobrecarga
Análise, Projeto e Programação OO • Na Análise OO o objetivo é desenvolver um modelo OO do domínio da aplicação. Os objetos identificados podem ou não podem ser mapeados diretamente em objetos do sistema • No Projeto OO o objetivo é desenvolver um modelo OO de um sistema de software para implementar os requisitos identificados. Estes requisitos podem ou não ser estruturados em objetos no domínio do problema • Na Programação OO o objetivo é realizar um projeto de software usando uma linguagem de programação OO. Uma linguagem de programação OO suporta diretamente a implementação de objetos e fornece classes e herança
Nome da Classe (obrigatório) Atributos da Classe (opcional) Operações da Classe (opcional) Unified Modeling Language • A UML é uma linguagem padrão para especificar, visualizar, documentar e construir artefatos de um sistema e pode ser utilizada ao longo de todo o ciclo de desenvolvimento e através de diferente tecnologias de implementação • Será citada a utilização do diagrama de classes • Uma classe UML apresenta a seguinte representação gráfica: Implementação em Java public class Sala{ int codigoSala; public void consultarSalas(){...} } Implementação em Delphi type TSala = class private codigoSala: integer; public procedure consultarSala;
Programação Orientada a Objetos • A Programação Orientada a Objetos (Object-Oriented Programing) foi concebida no início da década de 70 • Estruturação do programa é baseada nos dados e não nas funções • As funções mudam com mais frequência do que os dados • Linguagens OO • A orientação a objetos pode ser praticada em uma linguagem imperativa tal como C ou Pascal. Entretanto, as regras de escopo não prevenirão dos acessos impróprios a um objeto a partir de outro módulo, ficando sob a responsabilidade do programador • Formalmente, para ser considerada uma linguagem OO, esta precisa implementar quatro conceitos importantes: abstração, encapsulamento, herança e polimorfismo