Subtipos e Subclasses

Tamanho: px
Começar a partir da página:

Download "Subtipos e Subclasses"

Transcrição

1 Subtipos e Subclasses Aula 15 do curso de outubro de 2001 Sumário 1Subtipos 32 2 Exemplo: Bicicletas 33 3 Exemplo: Quadrado e retângulo 37 4 Princípio de substituição 38 5 Subclasses e subtipos Java 40 6 Interfaces Java 41 Leituras necessárias: Capítulo 7 do livro Program Development in Java da Bárbara Liskov. Verifique o seu livro texto Java sobre os detalhes de Java como, por exemplo, tipos abstratos (nem todos os métodos são implementados, e nenhum objeto pode ser instanciado), detalhes sobre interfaces, e modificadores de acesso (public, private, protected, default). Eles não serão discutidos nesta aula. 1Subtipos Nós vimos que A éumb se todo objeto A também é um objeto B. Por exemplo, todo automóvel é um veículo, e toda bicicleta é um veículo, e todo pula-pula é um veículo: todo veículo é um meio de transporte, assim como todo animal de carga. Nós apresentamos este subconjunto de relacionamento em um diagrama de dependência modular: Este subconjunto de relacionamento é uma condição necessária, mas não suficiente para um relacionamento de subtipificação. O tipo A é um subtipo do tipo B quando a especificação de A implica na especificação de B. Isto é, qualquer objeto (ou classe) que satisfaça a especificação de A também satisfaz a especificação de B, pois a especificação de B é mais fraca. Outra maneira de explicar isto é que em qualquer lugar do código, se você espera um objeto B, um objeto A é admissível. È garantido que o código escrito para funcionar com o objeto B (e para depender de suas propriedades) continua a funcionar se o objeto A for fornecido ao invés dele; além disso, o comportamento será o mesmo, se forem considerados apenas os aspectos do comportamento de A que também estão inclusos no comportamento de B. (O A pode introduzir novos comportamentos

2 que o B não tenha, mas isto apenas modifica os comportamentos existentes de B em certas maneiras; veja em seguida.) 2 Exemplo: Bicicletas Suponha que nós tenhamos uma classe para representar as bicicletas. Aqui está uma implementação parcial dessa classe: class Bicycle{ private int framesize; private int chainringgears; private int freewheelgears; // retorna o número de marchas da bicicleta public int gears() { return chainringgears * freewheelgears; // retorna o preço da bicicleta public float cost() { // retorna o imposto de venda que incide sobre a bicicleta public float salestax() { return cost() *.0825; public void gohome() { Uma nova classe, representando bicicletas com lanternas dianteiras, pode se adaptar a situações noturnas (ou as madrugadas). class LightedBicycle{ private int framesize; private int chainringgears; private int freewheelgears; private BatteryType battery; // retorna o número de marchas da bicicleta public int gears() { return chainringgears * freewheelgears; // retorna o preço da bicicleta float cost() { // retorna o imposto de venda que incide sobre a bicicleta public float salestax() { return cost() *.0825; public void gohome() { // execução: substitui a bateria existente pelo argumento b public void changebattery(batterytype b); Copiar todo o código é cansativo e passível de erro. (O erro pode ser causado pela falha na realização de uma cópia correta ou pela falha na realização das alterações necessárias.) Adicionalmente, se um

3 erro é encontrado em uma versão, é fácil esquecer de realizar o conserto em todas as versões do código. Finalmente, é muito difícil compreender a distinção entre duas classes apenas procurando por diferenças em uma massa de similaridades. A linguagem Java e outras linguagens de programação utilizam o conceito de subclasse para superar essas dificuldades. A especialização de classes utilizando herança de classe permite reutilizar implementações e sobrescrever os métodos. Uma implementação melhor da classe LightedBicycle éaseguinte class LightedBicycle extends Bicycle{ private BatteryType battery; // retorna o preço da bicicleta float cost() { return super.cost() + battery.cost(); public void gohome() { // execução: substitui a bateria existente pelo argumento b public void changebattery(batterytype b); A LightedBicycle não precisa implementar os métodos e campos que aparecem na sua superclasse Bicycle; as versões de Bicycle são automaticamente utilizadas pelo Java quando elas não são sobrescritas na subclasse. Considere a seguinte implementação do método gohome (juntamente com o fornecimento de especificações mais completas). Se estas forem as únicas alterações, as classes LightedBicycle e RacingBicycle são subtipos de Bicycle? (Mais adiante nós falaremos sobre o conceito de subtipos; nós retornaremos as diferenças entre as subclasses Java, os subtipos Java, e os verdadeiros subtipos mais tarde.) class Bicycle{ // requer: velocidade_do_vento < 20mph && luz_do_dia public void gohome() { class LightedBicycle{ // requer: velocidade_do_vento < 20mph void gohome() {

4 class RacingBicycle{ // requer: velocidade_do_vento < 20mph && luz_do_dia // em um período de tempo < 10 minutos // && faz o ciclista suar void gohome() { Para responder a essa pergunta, relembre a definição de subtipificação: um objeto do subtipo pode ser substituído em qualquer lugar onde o código espera um objeto do supertipo? Se sim, o relacionamento de subtipificação é válido. Neste caso, tanto LightedBicycle quanto RacingBicycle são subtipos de Bicycle. No primeiro caso, as condições são relaxadas; no segundo caso, a execução é reforçada de uma maneira queelaaindasatisfaçaaexecuçãodasuperclasse. O método cost de LightedBicycle mostra outra capacidade da especialização de classes em Java. Os métodos podem ser sobrescritos para fornecer uma nova implementação na subclasse. Isto permite uma maior reutilização de código; em particular, a LightedBicycle pode reutilizar o método salestax de Bicycle. QuandoosalesTax échamadoemumalightedbicycle, a versão da Bicycle é que é utilizada. Então, a chamada de cost de dentro de salestax chama a versão baseada no tipo em tempo de execução do objeto (LightedBicycle), assim a versão da LightedBicycle é utilizada. Independentemente do tipo declarado de um objeto, a implementação de um método, com muitas implementações (da mesma assinatura), é sempre escolhida baseada no tipo de tempo de execução. De fato, não existe nenhuma maneira para um cliente externo chamar a versão de um método, especificado pelo tipo declarado ou qualquer outro tipo, que não seja o tipo de tempo de execução. Esta é uma propriedade importante e muito agradável do Java (e outras linguagens orientadas a objeto). Suponha que a subclasse mantenha alguns campos extras que sejam mantidos em sincronismo com os campos da superclasse. Se os métodos da superclasse puderem ser chamados diretamente, é possível que sejam realizadas alterações em campos da superclasse sem que os campos da subclasse sejam alterados também, então a invariante de representação da subclasse seria quebrada. De qualquer maneira, uma subclasse pode chamar métodos dos seus ancestrais pela utilização de super. Algumas vezes isto é útil quando o método da subclasse necessita fazer apenas mais um pouco de trabalho; relembre a implementação de LightedBicycle para cost: class LightedBicycle extends Bicycle{ // retorna o preço da bicicleta float cost() { return super.cost() + battery.cost();

5 Suponha que a classe Rider modele as pessoas que passeiam de bicicleta. Na ausência de especializações de classe e subtipos, o diagrama de dependência modular iria se parecer com algo assim: O código para a Rider também precisaria testar que tipo de objeto teria sido passado, o que seria feio, verboso, e passível de erro. Com a subtipificação, as dependências do MDD se pareceriam com isso: As várias dependências foram reduzidas para uma única dependência. Quando as setas indicadoras de subtipo são adicionadas, o diagrama fica apenas mais um pouco complicado: Mesmo que existam várias setas, este diagrama é mais simples do que o original: restrições de dependência complicam o projeto e a implementação mais do que outros tipos de restrição. 3 Exemplo: Quadrado e retângulo Nós sabemos desde o ensino básico que todo quadrado é um retângulo. Suponha que nós queiramos fazer do quadrado Square um subtipo do retângulo Rectangle, que inclui um método setsize: class Rectangle{ // execução: define a largura width e a altura height com os valores // espeficiados (isto é, this.width = w && this.height = h) void setsize(int w, int h);

6 class Square extends Rectangle{ Qual dos seguintes métodos é correto para o Quadrado? // requer: w = h void setsize(int w, int h); void setsize(int edgelenght); // lança a exceção BadSizeException se w!= h void setsize(int w, int h) throws BadSizeException; O primeiro não está certo, pois o método da subclasse requer mais do que o método da superclasse. Assim, os objetos da subclasse não podem ser substituídos por objetos da superclasse, pois pode existir algum trecho de código que chama o método setsize com argumentos diferentes. O segundo não está certo (completamente), pois a subclasse ainda precisa especificar um comportamento para setsize(int, int); esta é uma definição de um método diferente (cujo o nome é o mesmo mas cuja assinatura é diferente). O terceiro não está certo, pois ele lança uma exceção que não é mencionada pela superclasse. Assim, novamente, ele possui um comportamento diferente e desta maneira o quadrado Square não pode ser substituído pelo retângulo Rectangle. (SeaexceçãoBadSizeException for uma exceção não verificada, então o Java irá permitir que o terceiro método seja compilado; mas então novamente, ele também irá permitir que o primeiro método compile. A noção do Java sobre subtipo é mais fraca do que a noção de subtipo do Sem nenhuma arrogância, nós iremos chamar o último de subtipos verdadeiros para distingui-los dos subtipos do Java.) Não existe uma maneira de sair deste dilema sem modificar o supertipo. Algumas vezes os subtipos não estão de acordo com a nossa intuição! Ou, a nossa intuição sobre o que é um bom supertipo está errada. Uma solução plausível seria alterar o Rectangle.setSize para especificar que ele lança a exceção; é claro que, na prática, somente o Square.size irá fazer isso. Outra solução seria eliminar o setsize e ao invés dele ter o método void scale(double scalefactor); que diminui ou aumenta uma figura. Outras soluções também são possíveis. 4 Princípio de substituição O princípio da substituição é a sustentação teórica dos subtipos; ele fornece uma definição precisa de quando dois tipos são subtipos. Informalmente, ele afirma que os subtipos devam ser substituídos por supertipos. Isto garante que se o código depender de (qualquer aspecto de) um supertipo, mas um objeto de um subtipo for substituído, o comportamento do sistema não será afetado. (O compilador Java também requer que as cláusulas extends ou implements nomeiem o pai para que os subtipos sejam usados no lugar dos supertipos.)

7 Os métodos de um subtipo devem suportar certos relacionamentos com os métodos do supertipo, e o subtipo deve garantir que qualquer propriedade do supertipo (como as invariantes de representação ou restrições de especificação) não seja violada pelo subtipo. Métodos Existem duas propriedades necessárias: 1. O subtipo deve possuir um método correspondente, para cada método do supertipo. (É permitido que o subtipo introduza novos métodos adicionais que não apareçam no supertipo.) 2. Cada método do subtipo que corresponda a um método do supertipo: requer menos (possui uma pré-condição mais fraca) - existem menos cláusulas requires, e cada uma delas é menos rigorosa do que uma no método do supertipo. - os tipos dos argumentos devem ser um dos supertipos do supertipo. Isto é dito ser uma contra-variância, e parece um pouco controverso, pois os argumentos dos métodos do subtipo são supertipos dos argumentos dos métodos do supertipo. Entretanto, isto faz sentido, pois é garantido que qualquer argumento passado para ométododosupertipoéumargumentoválidoparaométododosubtipo. garante mais (possui uma pós-condição mais forte) - não existem mais exceções - existem menos variáveis modificadoras - na descrição do resultado e/ou do estado resultante, existem mais cláusulas, e elas descrevem propriedades mais fortes - o tipo do resultado deve ser um dos subtipos do supertipo. Isto é dito ser uma covariância: o tipo de retorno do método do subtipo é um subtipo do tipo de retorno do método do supertipo. (Todas as descrições acima devem permitir a uniformidade; por exemplo, requer menos deveria ser não requer mais, e menos rigorosa deveria ser não mais rigorosa. Elas foram colocadas desta forma para permitir uma fácil leitura.) O método do subtipo não deve se comprometer em fornecer resultados a mais ou diferentes; ele deve apenas se comprometer a fazer o que o método do supertipo faz, assim como possivelmente garantir propriedades adicionais. Por exemplo, se um método de um supertipo retorna um número maior do que o seu argumento, um método do subtipo pode retornar um número primo maior do que o seu argumento. Como um exemplo de restrições de tipo, se A é um subtipo de B, então a seguinte redefinição (que é o mesmo que sobrescrever) seria válida: Bicycle B.f(Bicycle arg); RacingBicycle A.f(Vehicle arg); O método B toma uma bicicleta Bicycle como seu argumento, entretanto A.f pode aceitar qualquer veículo (o que inclui todas as bicicletas). O método B.f retorna uma bicicleta Bicycle como resultado, entretanto A.f retorna uma bicicleta de corrida RacingBicycle (que é propriamente uma bicicleta).

8 propriedades Quaisquer propriedades garantidas por um supertipo, como restrições sobre os valores que possam aparecer nos campos de especificação, também devem ser garantidas pelo subtipo. (É permitido que o subtipo reforce essas restrições.) Como um exemplo simples do livro texto, considere o FatSet, que é sempre não vazio. class FatSet{ // restrições de especificação: o objeto corrente this deve // sempre conter pelo menos um elemento // execução: se o objeto this contiver x e this.size > 1, // remova x de this void remove(int x); O tipo SuperFatSet com um método adicional // execução: remove x do objeto this void reallyremove(int x) não é um subtipo de FatSet. Mesmo que não exista nenhum problema com qualquer método de FatSet oreallyremove é um novo método, então as regras sobre métodos correspondentes não se aplicam este método viola a restrição. Se o objeto do subtipo for considerado puramente como um objeto do supertipo (isto é, apenas os métodos e campos do supertipo são consultados), então o resultado deve ser o mesmo que se um objeto do supertipo tivesse sempre sido manipulado ao invés dele. Na seção 7.9, o livro texto descreve o princípio de substituição como a colocação de restrições em assinaturas: isto são essencialmente as regras de contra-variância e covariância que foram descritas acima. (A assinatura de um procedimento é composta pelo seu nome, tipos de argumentos, tipos de retorno, e exceções.) métodos: isto são restrições de comportamento, ou todos os aspectos de uma especificação que não podem ser expressos em uma assinatura propriedades: como acima 5 Subclasses e subtipos Java Os tipos Java são as classes, interfaces, ou primitivas. O Java possui a sua própria noção de subtipo (que envolve apenas as classes e interfaces). Esta é uma noção mais fraca do que a noção de subtipos verdadeiros que foi descrita anteriormente; os subtipos Java não satisfazem necessariamente o princípio de substituição. Além disso, uma definição de subtipo que satisfaça o princípio de substituição pode não ser permitida em Java, e não irá compilar. Para um tipo ser um subtipo Java de outro tipo, o relacionamento deve ser declarado (pela sintaxe Java extends ou implements), e os métodos devem satisfazer a duas propriedades similares a, entretanto mais fracas que, aquelas para os subtipos verdadeiros:

9 1. O subtipo deve possuir um método correspondente, para cada método do supertipo. (É permitido que o subtipo introduza novos métodos adicionais que não apareçam no supertipo.) 2. Para cada método do subtipo que corresponda a um método do supertipo os argumentos devem possuir os mesmos tipos o resultado deve possuir o mesmo tipo não devem existir mais declarações de exceções O Java não possui nenhuma noção de especificação comportamental, assim ele não realiza nenhuma verificação e não pode dar nenhuma garantia quanto ao comportamento. A exigência de uniformidade de tipos para os argumentos e o resultado é mais forte do que o estritamente necessário para garantir a proteção do tipo. Isto proíbe alguns trechos de código que nós gostaríamos de escrever. Entretanto, isto simplifica a sintaxe e a semântica da linguagem Java. A especialização de classes possui várias vantagens, todas elas provenientes da reutilização: As implementações de subclasses não precisam repetir os campos e métodos não alterados, mas podem reutilizar os da superclasse Os clientes (aqueles que executam as chamadas) não precisam modificar o código quando novos subtipos são adicionados, mas podem reutilizar o código existente (o trecho que não menciona os subtipos totalmente, apenas o supertipo) O projeto resultante possui uma melhor modularidade e uma reduzida complexidade, pois os projetistas, os programadores, e os usuários somente têm que entender o supertipo, não todos os subtipos; isto é reutilização de especificação. Um mecanismo chave que permite esses benefícios é a redefinição, que especializa o comportamento para alguns métodos. Na ausência de redefinição, qualquer alteração no comportamento (mesmo uma compatível) pode forçar uma completa re-implementação. A redefinição permite que parte de uma implementação seja alterada sem modificar outras partes que dependam dela. Isto permite uma maior reutilização de código e especificação, por ambos a implementação e o cliente. Uma potencial desvantagem da especialização de classes é a oportunidade que ela apresenta para a reutilização inapropriada. As subclasses e superclasses podem depender umas das outras (explicitamente pelo nome do tipo ou implicitamente pelo conhecimento da implementação), particularmente se as subclasses tiverem acesso às partes protegidas da implementação da superclasse. Essas dependências extras complicam o MDD, o projeto, e a implementação, fazendo com seja mais complicado implementar, entender, e modificar. 6 Interfaces Java Algumas vezes você quer garantias sobre comportamento sem compartilhar o código. Por exemplo, você pode querer requerer que os elementos de um contêiner específico sejam ordenados ou suportem uma operação particular, sem fornecer uma implementação padrão (porque todo relacionamento de ordem possui uma implementação diferente). O Java fornece interfaces para preencher essas necessidades. As interfaces garantem nenhuma reutilização de código. Outra vantagem das interfaces é que uma classe pode implementar múltiplas

10 interfaces e uma interface pode estender múltiplas interfaces; em oposição a isto, uma classe só pode estender uma classe. Isto se confirma na prática, a implementação de múltiplas interfaces e a extensão de uma única superclasse fornece a maioria dos benefícios da herança arbitrária, mas com uma implementação e uma semântica de linguagem mais simples. Uma desvantagem das interfaces é que elas não fornecem uma maneira para especificar a assinatura (ou o comportamento) de um construtor.

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding Introdução à Programação Interface, Polimorfismo e Dynamic Binding Interface Programador Java PLENO Possuir sólida experiência em programação Desenvolvimento na linguagem JAVA Webservice, Struts ou JSF(desejável)

Leia mais

Java 2 Standard Edition Como criar classes e objetos

Java 2 Standard Edition Como criar classes e objetos Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da

Leia mais

Capítulo 5 Reuso de Classes

Capítulo 5 Reuso de Classes Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. Desenvolvimento Orientado a Objetos com Java Capítulo 5 Reuso de Classes

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

Reuso com Herança a e Composiçã

Reuso com Herança a e Composiçã Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:

Leia mais

Programação Orientada a Objetos em Java. Herança

Programação Orientada a Objetos em Java. Herança Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Herança Professor: César Melo Slides baseados em materiais preparados

Leia mais

Herança. Alberto Costa Neto DComp - UFS

Herança. Alberto Costa Neto DComp - UFS Herança Alberto Costa Neto DComp - UFS 1 Motivação Vimos como se faz encapsulamento e a importância de fazê-lo... Contudo, também é possível fazer encapsulamento em algumas linguagens não OO O que mais

Leia mais

Módulo 07 Características Avançadas de Classes

Módulo 07 Características Avançadas de Classes Módulo 07 Características Avançadas de Classes Última Atualização: 15/06/2010 1 Objetivos Descrever variáveis, métodos e iniciadores static Descrever a semântica do modificador final em classes, métodos

Leia mais

3. PARADIGMA ORIENTADO A OBJETOS

3. PARADIGMA ORIENTADO A OBJETOS Paradigmas de Linguagens I 1 3. PARADIGMA ORIENTADO A OBJETOS Este paradigma é o que mais reflete os problemas atuais. Linguagens orientada a objetos (OO) são projetadas para implementar diretamente a

Leia mais

Módulo 06 Desenho de Classes

Módulo 06 Desenho de Classes Módulo 06 Desenho de Classes Última Atualização: 13/06/2010 1 Objetivos Definir os conceitos de herança, polimorfismo, sobrecarga (overloading), sobreescrita(overriding) e invocação virtual de métodos.

Leia mais

Polimorfismo. Prof. Leonardo Barreto Campos 1

Polimorfismo. Prof. Leonardo Barreto Campos 1 Polimorfismo Prof. Leonardo Barreto Campos 1 Sumário Introdução; Polimorfismo; Polimorfismo Java; Métodos Abstratos Java Classes Abstratas Java Exercício - Java Polimorfismo C++ Classe Abstrata C++; Funções

Leia mais

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:

Leia mais

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes. Desenvolvimento OO com Java 7 RTTI e Interfaces Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

Leia mais

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education Java Como Programar, 8/E Slide 1 Slide 2 Slide 3 Métodos genéricos e classes genéricas (e interfaces) permitem especificar, com uma única declaração de método, um conjunto de métodos relacionados ou, com

Leia mais

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos (DPADF 0063) Programação Orientada a Objetos (DPADF 0063) Aula 5 Herança Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:

Leia mais

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

Sobre o Professor Dr. Sylvio Barbon Junior

Sobre o Professor Dr. Sylvio Barbon Junior 5COP088 Laboratório de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1 Sobre o Professor Dr. Sylvio Barbon Junior Formação: Ciência e Engenharia da Computação (2005

Leia mais

Programação Modular em C++

Programação Modular em C++ Programação Modular em C++ Princípios de Projeto Orientado por Objetos Roberto da Silva Bigonha Todos os direitos reservados Proibida a cópia sem autorização do autor @Roberto S. Bigonha Princípios de

Leia mais

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2 BCC221 Programação Orientada a Objetos Prof. Marco Antonio M. Carvalho 2014/2 Site da disciplina: http://www.decom.ufop.br/marco/ Moodle: www.decom.ufop.br/moodle Lista de e- mails: bcc221- decom@googlegroups.com

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.

Leia mais

Java Como Programar, 8/E. (C) 2010 Pearson Education, Inc. Todos os direitos reservados.

Java Como Programar, 8/E. (C) 2010 Pearson Education, Inc. Todos os direitos reservados. Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os direitos reservados. Polimorfismo Permite programar no geral em vez de programar no específico. O polimorfismo permite escrever programas

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/52 Herança revisão A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode

Leia mais

Aula 3: Desacoplamento 2ª. Parte

Aula 3: Desacoplamento 2ª. Parte Aula 3: Desacoplamento 2ª. Parte Na última aula, nós falamos a respeito da importância das dependências entre as partes do programa em um projeto de software. Uma boa linguagem de programação permite a

Leia mais

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3) pg. 1/6 Material de Apoio 5 Herança Observe o código das classes Fatorial e Fibonacci apresentados abaixo. class Fatorial { class Fibonacci { private int n, res; private int n, res; public Fatorial( int

Leia mais

Padrão Básico de Projeto: Interfaces e Polimorfismo

Padrão Básico de Projeto: Interfaces e Polimorfismo Padrão Básico de Projeto: Interfaces e Polimorfismo Herança de implementação versus herança de interface Há uma diferença grande entre uma classe e seu tipo A classe define ambos um tipo e uma implementação

Leia mais

Programação Orientada a Objetos C++

Programação Orientada a Objetos C++ Programação Orientada a Objetos em C++ Sumário Histórico Comparação com Java Encapsulamento Tratamento de classes e objetos Herança Polimorfismo Histórico Desenvolvido por Bjarne Stroustrup dos Bell Labs

Leia mais

Programação Orientada a Objetos em java. Polimorfismo

Programação Orientada a Objetos em java. Polimorfismo Programação Orientada a Objetos em java Polimorfismo Polimorfismo Uma característica muito importante em sistemas orientados a objetos Termo proveniente do grego, e significa muitas formas Em POO, significa

Leia mais

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Paradigmas da Programação Linguagem JAVA Interfaces (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Motivação para usar Interfaces Definição de Interface

Leia mais

No artigo anterior explicamos. Desenvolvimento de Software Dirigido por Caso de Uso. Parte II: Especificando Caso de Uso

No artigo anterior explicamos. Desenvolvimento de Software Dirigido por Caso de Uso. Parte II: Especificando Caso de Uso Desenvolvimento de Software Dirigido por Caso de Uso Parte II: Especificando Caso de Uso Vinicius Lourenço de Sousa viniciuslsousa@gmail.com Atua no ramo de desenvolvimento de software há mais de 10 anos,

Leia mais

Estrutura de Dados Básica

Estrutura de Dados Básica Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 6: Tipos Abstratos de Dados O objetivo desta aula é introduzir os conceitos envolvidos em Tipos Abstratos de Dados e explorar esses conceitos

Leia mais

Aula 10: Análise Dinâmica - 1a. Parte

Aula 10: Análise Dinâmica - 1a. Parte Aula 10: Análise Dinâmica - 1a. Parte A melhor forma de garantir a qualidade do software que você constrói é projetando-o cuidadosamente desde o início. Desta forma, as partes se encaixarão mais perfeitamente,

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais

Programação Orientada a Objetos. Encapsulamento

Programação Orientada a Objetos. Encapsulamento Programação Orientada a Objetos Encapsulamento de Dados Ocultação de dados Garante a transparência de utilização dos componentes do software, facilitando: Entendimento Reuso Manutenção Minimiza as interdependências

Leia mais

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas Programação com Objectos Processamento de Dados I 4. Classes Abstractas 1 Conceito de classe abstracta Declaração de uma classe abstracta Implicações e características das classes abstractas Utilização

Leia mais

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais Curso de Java Orientação a objetos e a Linguagem JAVA Roteiro A linguagem Java e a máquina virtual Objetos e Classes Encapsulamento, Herança e Polimorfismo Primeiro Exemplo A Linguagem JAVA Principais

Leia mais

Documentação Usando o Javadoc

Documentação Usando o Javadoc Documentação Usando o Javadoc Prof. MSc. João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão 2.1 Última Atualização: 04/2005 1 Comentários e Documentação Comentários em Java Existem três tipos de comentários

Leia mais

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos) Prova de Java 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos) O programa consiste em uma aplicação que simula o comportamento de dois

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

1. Herança. Sobrescrevem métodos - redefinem métodos herdados. Subclasse herda de uma superclasse

1. Herança. Sobrescrevem métodos - redefinem métodos herdados. Subclasse herda de uma superclasse 1. Herança Herança - forma de reutilização de software Novas classes são criadas a partir de classes já existentes Absorvem atributos e comportamentos, e incluem os seus próprios Sobrescrevem métodos -

Leia mais

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Java Básico Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Classes Abstratas construção de uma classe abstrata construção de classes derivadas Classes e Herança Uma classe define

Leia mais

Programação com Acesso a BD. Programação com OO Acesso em Java

Programação com Acesso a BD. Programação com OO Acesso em Java Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática

Leia mais

UNIVERSIDADE PRESBITERIANA MACKENZIE FACULDADE DE COMPUTAÇÃO E INFORMÁTICA

UNIVERSIDADE PRESBITERIANA MACKENZIE FACULDADE DE COMPUTAÇÃO E INFORMÁTICA EDITAL DO PROGRAMA DE CERTIFICAÇÕES EM COMPUTAÇÃO MACK COMPUTING CERTIFICATION MCC 2º SEMESTRE DE 2014 O Diretor da Faculdade de Computação e Informática (FCI), no uso de suas atribuições estatutárias

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Programação Orientada a Objetos em Java

Programação Orientada a Objetos em Java Programação Orientada a Objetos em Java Rone Ilídio da Silva Universidade Federal de São João del-rei Campus Alto Paraopeba 1:14 1 Objetivo Apresentar os principais conceitos de Programção Orientada a

Leia mais

Revisão OO Básico. Orientação a Objetos em Java

Revisão OO Básico. Orientação a Objetos em Java Revisão OO Básico Orientação a Objetos em Java Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Nomenclatura A unidade básica de programação em linguagens orientadas a objetos é a

Leia mais

Como usar a documentaçã

Como usar a documentaçã Java 2 Standard Edition Como usar a documentaçã ção da API Java 2 Helder da Rocha www.argonavis.com.br 1 Documentação Aprender a usar a documentação é essencial para quem deseja desenvolver aplicações

Leia mais

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

Construção de novas Classes em Java. Classes Atributos Métodos Herança... Construção de novas Classes em Java Classes Atributos Métodos Herança... 1 Exemplo Representação em UML Java (Unified Modeling Language) Stack items : Vector Stack( ) push( ) pop( ) isempty( ) finalize(

Leia mais

Prototype, um Design Patterns de Criação

Prototype, um Design Patterns de Criação Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe

Leia mais

Programação Avançada

Programação Avançada Índice 1.1 - Introdução História A plataforma Java 1.2 - Conceitos Fundamentais na programação por objectos Objectos Encapsulamento Classes Herança Polimorfismo Interfaces Pacotes 1/24 1.1 Introdução 1.1

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 01 Orientação a Objetos Edirlei Soares de Lima Paradigmas de Programação Um paradigma de programação consiste na filosofia adotada na

Leia mais

Aula 11: Análise Dinâmica - 2a. parte

Aula 11: Análise Dinâmica - 2a. parte Aula 11: Análise Dinâmica - 2a. parte Nesta aula, continuaremos nossa discussão a respeito da análise dinâmica, focando na atividade de teste. Iremos dar uma breve olhada em algumas das noções básicas

Leia mais

Programação com Objectos Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos)

Programação com Objectos Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos) LEIC-A LEIC-T LERC MEE MEIC-A 2009/2010 (1º Semestre) Teste Teórico (201001040900) 1/10 LEIC-A LEIC-T LERC MEE MEIC-A 2009/2010 (1º Semestre) Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos) Nome:

Leia mais

Curso Java Starter. www.t2ti.com 1

Curso Java Starter. www.t2ti.com 1 1 Apresentação O Curso Java Starter foi projetado com o objetivo de ajudar àquelas pessoas que têm uma base de lógica de programação e desejam entrar no mercado de trabalho sabendo Java, A estrutura do

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos (DPADF 0063) Programação Orientada a Objetos (DPADF 0063) Aula 6 Polimorfismo Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof.

Leia mais

O uso de exceções permite separar a detecção da ocorrência de uma situação excepcional do seu tratamento, ao se programar um método em Java.

O uso de exceções permite separar a detecção da ocorrência de uma situação excepcional do seu tratamento, ao se programar um método em Java. Exceções em Java Miguel Jonathan DCC/IM/UFRJ (rev. abril de 2011) Resumo dos conceitos e regras gerais do uso de exceções em Java O uso de exceções permite separar a detecção da ocorrência de uma situação

Leia mais

Curso Java Starter. www.t2ti.com 1

Curso Java Starter. www.t2ti.com 1 1 2 Apresentação O Curso Java Starter foi projetado com o objetivo de ajudar àquelas pessoas que têm uma base de lógica de programação e desejam entrar no mercado de trabalho sabendo Java, A estrutura

Leia mais

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e

Leia mais

Orientação a Objetos e a Linguagem Java

Orientação a Objetos e a Linguagem Java Orientação a Objetos e a Linguagem Java Afrânio Assis afranio@gmail.com Novembro/2006 1 Reutilizição com Herança e Composição Novembro/2006 2 Introdução Separar as partes que podem mudar das partes que

Leia mais

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; um objeto; é definido; Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; class ClasseBase{ é instanciado; $objetobase = new ClasseBase; Caso queira,

Leia mais

Capítulo 3. Programação por objectos em Java

Capítulo 3. Programação por objectos em Java Capítulo 3. Programação por objectos em Java 1/46 Índice Indice 3.1 - Qualificadores de visualização 3.2 - Classe 3.3 - Objecto 3.4 - Métodos 3.5 - Herança 3.6 - Reescrita de métodos 3.7 - Classes abstractas

Leia mais

Aula 06 Introdução à Teste de Módulos II e Exercícios. Alessandro Garcia LES/DI/PUC-Rio Março 2014

Aula 06 Introdução à Teste de Módulos II e Exercícios. Alessandro Garcia LES/DI/PUC-Rio Março 2014 Aula 06 Introdução à Teste de Módulos II e Exercícios Alessandro Garcia LES/DI/PUC-Rio Março 2014 Princípios Discutidos até aqui Cada módulo deveria implementar uma única abstração similarmente: cada função

Leia mais

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 14 Herança a e Polimorfismo Objetivos do Capítulo Apresentar os conceitos de herança e de polimorfismo. Explorar os diversos recursos disponíveis no Java para a aplicação da herança e do polimorfismo

Leia mais

Herança e Polimorfismo de Inclusão

Herança e Polimorfismo de Inclusão Herança e Polimorfismo de Inclusão Sérgio Queiroz de Medeiros sergio@ufs.br 29 de maio de 2012 1 Polimorfismo Ad-hoc Coerção Sobrecarga (Overloading) Universal Paramétrico Inclusão 2 Herança Herança é

Leia mais

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010 Módulo 02 Programação Orientada a Objetos Última atualização: 07/06/2010 1 Objetivos Definir conceitos de orientação a objetos: o abstração, encapsulamento, pacotes. Discutir reutilização de código em

Leia mais

Padrões de Projeto Curso 6170 Aulas 12 a 14

Padrões de Projeto Curso 6170 Aulas 12 a 14 Padrões de Projeto Curso 6170 Aulas 12 a 14 1. Padrões de projeto Um padrão de projeto é:. uma solução padrão para um problema comum de programação. uma técnica capaz de tornar o código mais flexível ao

Leia mais

HERANÇA. Prog. Orientada a Objetos em Java

HERANÇA. Prog. Orientada a Objetos em Java HERANÇA Prog. Orientada a Objetos em Java Lembrando: Acoplamento slide 2 O acoplamento se refere às ligações entre distintas unidades de um programa. Se duas classes dependem rigorosamente de muitos detalhes

Leia mais

A Linguagem Java. Alberto Costa Neto DComp - UFS

A Linguagem Java. Alberto Costa Neto DComp - UFS A Linguagem Java Alberto Costa Neto DComp - UFS 1 Roteiro Comentários Variáveis Tipos Primitivos de Dados Casting Comandos de Entrada e Saída Operadores Constantes 2 Comentários /** Classe para impressão

Leia mais

Prof. Marcelo Heitor Teixeira marceloheitor.com. Java Exceções e Finalizações

Prof. Marcelo Heitor Teixeira marceloheitor.com. Java Exceções e Finalizações Prof. Marcelo Heitor Teixeira marceloheitor.com Java Exceções e Finalizações # Exceções em Java # Hierarquia de Classes # Lançando, Declarando e Capturando # Classes de Exceções Personalizadas # Entendendo

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação Enzo Seraphim 1 Padrões de Projeto

Leia mais

Prof. Esp. Adriano Carvalho

Prof. Esp. Adriano Carvalho Prof. Esp. Adriano Carvalho Um arquivo contendo uma sequência de comandos em uma linguagem de programação especifica Esses comandosrespeitam regras de como serem escritos e quais são as palavras que podem

Leia mais

Curso - Padrões de Projeto Módulo 2: Padrões de Criação

Curso - Padrões de Projeto Módulo 2: Padrões de Criação Curso - Padrões de Projeto Módulo 2: Padrões de Criação Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

Modulo IIa Extra: Object

Modulo IIa Extra: Object Modulo IIa Extra: Object Professor Ismael H F Santos ismael@tecgraf.puc-rio.br April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Bibliografia Linguagem de Programação JAVA Ismael H. F. Santos,

Leia mais

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.

Leia mais

(ou seja, boas praticas de programação orientada a objetos devem ser empregadas mesmo se não foram explicitamente solicitadas)

(ou seja, boas praticas de programação orientada a objetos devem ser empregadas mesmo se não foram explicitamente solicitadas) PC-2 / LP-2 2009/2 Lista 2 Prof. Alexandre Sztajnberg Em todos os exercícios a(o) aluna(o) deve, além de atender aos requisitos enunciados, utilizar os conceitos e características de orientação a objetos

Leia mais

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Orientação a Objetos em Java Leonardo Gresta Paulino Murta leomurta@ic.uff.br Agenda Introdução; Orientação a Objetos; Orientação a Objetos em Java; Leonardo Murta Orientação a Objetos em Java 2 Agosto/2007

Leia mais

Orientação a Objetos

Orientação a Objetos Orientação a Objetos 1. Sobrecarga (Overloading) Os clientes dos bancos costumam consultar periodicamente informações relativas às suas contas. Geralmente, essas informações são obtidas através de extratos.

Leia mais

Agentes Inteligentes: Uma Abordagem Prática com o Java Agent Development Framework

Agentes Inteligentes: Uma Abordagem Prática com o Java Agent Development Framework Agentes Inteligentes: Uma Abordagem Prática com o Java Agent Development Framework Daniel Abella Cavalcante Mendonça de Souza daniel@abella.com.br Capítulo 1. Introdução Segundo Russel e Norvig [1], um

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

Leia mais

Modelagem e Implementação (Incremental de um Software para Controle) de Aquário de Peixes

Modelagem e Implementação (Incremental de um Software para Controle) de Aquário de Peixes Modelagem e Implementação de Aquário de Peixes- por Jorge Fernandes - Página 1 Modelagem e Implementação (Incremental de um Software para Controle) de Aquário de Peixes Jorge Fernandes Natal, Agosto de

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) rosalvo.oliveira@univasf.edu.br

Leia mais

Desenvolvimento Web TCC-00.226 Turma A-1 / 2013.2

Desenvolvimento Web TCC-00.226 Turma A-1 / 2013.2 1 Desenvolvimento Web TCC-00.226 Turma A-1 / 2013.2 Professor Leandro A. F. Fernandes Instituto de Computação Universidade Federal Fluminense Lista de Exercícios 02 Orientação a Objetos 1) Identifique

Leia mais

Linguagem de Programação III

Linguagem de Programação III Clique para editar o estilo do subtítulo mestre Linguagem de Programação III Histórico Encapsulamento Tratamento de classes e objetos Herança Polimorfismo Comparação com Java Histórico Desenvolvido por

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Conceitos Avançados da Linguagem de Programação Java Prof Gilberto B Oliveira Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros

Leia mais

Notas de Aula 05: Aplicação de um caso de uso

Notas de Aula 05: Aplicação de um caso de uso Notas de Aula 05: Aplicação de um caso de uso Objetivos da aula: Aprender a aplicar a técnica de casos de uso em um pequeno problema real Identificar as variáveis relevantes a serem consideradas Modelar

Leia mais

Programas eram lineares e com poucos módulos (Programação estruturada) Aumento da complexidade dos sistemas e difícil reusabilidade dos mesmos

Programas eram lineares e com poucos módulos (Programação estruturada) Aumento da complexidade dos sistemas e difícil reusabilidade dos mesmos OO -Objetos, classes, atributos, métodos, estado, comportamento e identidade (Slide) Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Introdução Programas eram lineares e com poucos

Leia mais

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o

Leia mais

UML Unified Modeling Language

UML Unified Modeling Language UML Unified Modeling Language Linguagem de Modelagem Unificada A linguagem UML UML (Unified Modeling Language) Linguagem de Modelagem Unificada É uma linguagem para especificação, É uma linguagem para

Leia mais