1 / 24

Linguagens de Programação Orientadas a Objetos

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

teleri
Download Presentation

Linguagens de Programação Orientadas a Objetos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Roteiro • Apresentação • Qualidade de Software • Paradigmas de Programação • Conceitos da Orientação a Objetos • Programação Orientada a Objetos • Java e Delphi

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. Apresentação Cronograma

  9. Apresentação Cronograma

  10. Apresentação Cronograma

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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...

  16. 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)

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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;

  24. 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

More Related