Apresentac~ao Java { conceitos Basicos Abordagem Orientada a Objectos Objectivo: I aplicac~oes que resolvem problemas de elevada complexidade I facilitar a utilizac~ao de equipas de programadores I tecnicas de desenvolvimento rapido de aplicaco~es Abordagem: I decompor o problema em partes mais simples e independentes I cada equipa trabalha na implementac~ao da soluc~ao de uma parte do problema. Interacc~ao mnima com as outras equipas I os \modulos" desenvolvidos s~ao reutilizaveis em outras aplicac~oes Rui Camacho Apresentac~ao Java { conceitos Basicos Linguagens de Alto-n vel Complementos de Programac~ao e Algoritmos { LEIC iniciais Limita c~ oes: I falta de estruturac~ao I nenhuma especie de encapsulamento I nenhum aspecto de abstracc~ao Exemplos: implementaco~es iniciais de Fortran e Basic Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Procedimentos Blocos de codigo com variaveis locais que implementam algoritmos ou operaco~es elementares de algoritmos. Acesso atraves de chamada pelo nome e passagem de par^ametros. Vantagens: I estruturac~ao/modularidade I certo grau de encapsulamento I certo grau de abstracc~ao Rui Camacho Apresentac~ao Java { conceitos Basicos Procedimentos Complementos de Programac~ao e Algoritmos { LEIC (cont.) Limita c~ oes: I nomes de func~oes n~ao podem ser duplicados (ex: a func~ao de inserir em estruturas de dados diferentes requer func~oes com nomes diferentes) I dados manipulados por diferentes func~oes (ex: de pop e push) s~ao declarados globais stack com operac~ oes I n~ao existe instanciac~ao. N~ao se pode replicar dinamicamente uma estrutura de dados com operac~oes de manutenc~ao associadas. Exemplos: funco~es do C ou procedimentos/func~oes do Pascal Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Modulos Blocos que ecapsulam dados e procedimentos. Uma interface especica o que e visvel do exterior. Vantagens: I estruturac~ao/modularidade I encapsulamento de dados e procedimentos I certo grau de abstracc~ao Limita c~ oes: I n~ao ha instanciac~ao. So existe um modulo de cada \especie". N~ao se pode replicar dinamicamente um modulo Rui Camacho Apresentac~ao Java { conceitos Basicos Complementos de Programac~ao e Algoritmos { LEIC Tipos Abstractos de Dados Conjunto de dados com operaco~es de manipulac~ao associadas. Vantagens: I abstracc~ao I instanciac~ao Limita c~ oes: I n~ao tem algumas caractersticas importantes de uma linguagem O.O. (ex: heranca) Exemplos: Stack com operaco~es de pop, push, top etc Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Objectos Entidades que cont^em dados e procedimentos e est~ao organizadas hierarquicamente. Utilizam um mecanismo de envio de mensagens. Vantagens: I I I I I abstracc~ao/instanciac~ao heranca modularidade encapsulamento polimorsmo Limita c~ oes: I :-) Rui Camacho Apresentac~ao Java { conceitos Basicos Complementos de Programac~ao e Algoritmos { LEIC Exemplo Problema: quero enviar um ramo de ores a minha m~ae que mora numa outra cidade Solu c~ ao: vou a minha orista (donaFlor) e digo-lhe \envie um ramo de rosas a Sra ... que mora em ..." (do livro \An introduction to Object-Oriented Programming" - Tomothy Budd) Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Perspectiva O.O. do exemplo I para desencadear uma acc~ao transmito uma mensagem a um agente I I a acc~ao e iniciada pela recepc~ao de uma mensagem I I (objecto) a mensagem tem um receptor e pode ter argumentos: tipo de ores, nome do destinatario, morada uma vez aceite a mensagem e da responsabilidade do receptor realizar a acc~ao desconheco os pormenores que o receptor usa para realizar a acc~ao (encapsulamento) Rui Camacho Apresentac~ao Java { conceitos Basicos Perspectiva O.O. do exemplo I I I Complementos de Programac~ao e Algoritmos { LEIC (cont.) assumo caractersticas e comportamentos tpicos da categoria (Florista) a que pertence a inst^ancia (donaFlor) (instanciac~ao) assumo ainda caractersticas de categorias mais gerais (ex: Vendedores) das quais as Floristas s~ao uma categoria particular. (heranca) a realizac~ao da tarefa pela donaFlor pode envolver outros agentes (objectos) Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Classes e Objectos (do livro \Object-Oriented Analysis and Design - Grady Booch) Rui Camacho Apresentac~ao Java { conceitos Basicos Complementos de Programac~ao e Algoritmos { LEIC Classes e Objectos Analogia C denic~ao criac~ao automatica a pedido Java typedef structf char nome[80]; int idade; g Pessoa; class Pessoaf int idade; public Pessoa()f idade = 0; Pessoa pessoa1; pessoa2 = (Pessoa *) malloc( ... ); Rui Camacho g g int inteiro; pessoa = new Pessoa(); Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Abstracc~ao Capacidade de encapsular e isolar informac~ao de design de informac~ao de execuc~ao. Vantagens: I reutilizac~ao de software I desenvolvimento mais rapido de software Desvantagens: I Eci^encia (alguns compiladores de linguagens imperativas fazem \inline") Rui Camacho Apresentac~ao Java { conceitos Basicos Complementos de Programac~ao e Algoritmos { LEIC Heranca Princpio que permite que conhecimento de uma categoria mais geral que a categoria de um indivduo seja acessvel a esse indivduo. Vantagens: I evita replicac~ao de informac~ao (codigo e dados) I desenvolvimento mais rapido de software Desvantagens: I Eci^encia Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Polimorsmo Propriedade de utilizar o mesmo codigo para processar objectos diferentes. Vantagens: I Tratamento uniforme de entidades de natureza diferente mas relacionada (ex: biblioteca com livros, revistas, jornais ...) I mais facil actualizac~ao/manutenc~ao de software Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC