POO com Java PDF
Document Details
Uploaded by ForemostRadon
Tags
Related
- Introduction to Java Programming and Data Structures (2019) by Y. Daniel Liang - PDF
- Concepts des langages objet - Programmation Orientée Objet - JAVA PDF
- Java Programming Concepts (Lesson Plan)
- CST 205 Object Oriented Programming using Java PDF
- Computer Science Review PDF
- Unit-1 Introduction to Object Oriented Programming and Basic Concepts PDF
Summary
These are lecture notes on Object-Oriented Programming (OOP) using Java. They cover fundamental concepts such as Abstract Data Types, Inheritance, Interfaces, and Exceptions.
Full Transcript
POO com Java ADT, Herança, Interfaces, Exceções, Classes Genéricas Algoritmos e Estrutura de Dados 1 Princípios da POO POO com Java 2 Algoritmos e Estrutura de Dados Tipos de Dados Abstratos Abstrair, é conseguir extrair de...
POO com Java ADT, Herança, Interfaces, Exceções, Classes Genéricas Algoritmos e Estrutura de Dados 1 Princípios da POO POO com Java 2 Algoritmos e Estrutura de Dados Tipos de Dados Abstratos Abstrair, é conseguir extrair de um sistema a suas partes essenciais. É a aplicação desse princípio na construção das estruturas de dados que está na origem dos Tipos de Dados Abstratos - abstract data types (ADTs). ADT é um modelo de estrutura de dados que especifica não apenas os tipos de dados, mas também as operações a eles associadas (operações possíveis de realizar sobre esses dados). Um ADT especifica o que uma operação faz, não como o faz. O comportamento suportado por um ADT pode ser expresso em Java por uma interface. POO com Java 3 Algoritmos e Estrutura de Dados Interfaces Para que dois objetos possam interagir, cada um deles tem de conhecer o conjunto de mensagens que o outro aceita (métodos que suporta). Para facilitar esse "conhecimento", as classes devem especificar a interface de programação (API), ou simplesmente interface, que os seus objetos vão precisar de apresentar aos objetos que com eles queiram comunicar. As interfaces estabelecem o protocolo de interação entre objetos Uma interface é um conjunto de declarações de métodos (sem corpo e sem dados) e define-se de forma semelhante a uma classe As interfaces não têm construtores e não podem ser diretamente instanciadas Quando uma classe implementa uma interface, ela é obrigada a implementar todos os seus métodos (caso contrário fica abstrata), é como se a classe assinasse um contrato, em que se compromete a implementar todo o comportamento descrito na interface. Uma classe abstrata também não pode ser instanciada mas, contrariamente ao que se passa com as interfaces, pode conter um ou mais métodos totalmente definidos. Enquanto uma classe define os atributos e comportamento dum objeto, uma interface descreve o comportamento que uma classe há de implementar. No fundo, uma interface especifica QUE operações devem ser asseguradas; Uma classe define COMO deverão ser realizadas. POO com Java 4 Algoritmos e Estrutura de Dados Interfaces Em Java, uma interface é também um tipo referência, semelhante a uma classe, mas os seus métodos são todos abstratos. Para além dos métodos abstratos, uma interface pode ainda conter: constantes (atributos estáticos e finais); métodos por defeito (com implementação por omissão); métodos estáticos; definições de tipos (nested types). Tal como acontece com as classes, as interfaces podem derivar de outras; uma interface é escrita num ficheiro com o mesmo nome e extensão.java; o resultado da compilação (bytecode) de uma interface vai parar a um ficheiro com o mesmo nome e extensão.class. as interface devem também ser colocadas dentro de packages. Exemplo de interface public interface IAutomovel{ void acelerar(); void travar(); } POO com Java 5 Algoritmos e Estrutura de Dados Diferenças entre uma interface e uma classe Em síntese, uma interface apresenta as seguintes diferenças relativamente a uma classe: não é instanciável; não contém construtores; todos os métodos são abstratos; não contém atributos (poderá conter apenas atributos que sejam, em simultâneo, estáticos e finais); uma classe implementa (implements) uma interface, não deriva dela, não existindo por isso uma relação de herança; uma interface pode derivar de múltiplas interfaces; na declaração da uma interface usa-se a palavra interface. por omissão, uma interface é abstrata (não precisamos de usar o modificador abstract no inicio da sua declaração); por omissão, também os métodos de uma interface são abstratos (não precisamos de usar o modificador abstract); os métodos de uma interface são sempre públicos (não precisamos de usar o modificador public). POO com Java 6 Algoritmos e Estrutura de Dados Herança de classes e interfaces Uma classe só pode derivar de uma única classe base, que define quem ela é, mas pode implementar várias interfaces, que definem que funções pode ela desempenhar. class A extends B implements I1, I2, I3 {…} Já uma interface pode derivar de várias outras interfaces interface I1 extends I2, I3, I4 {…} Recorde-se que uma classe com o modificador final não pode ter subclasses. É usual iniciar-se o nome duma interface com um I maiúsculo. POO com Java 7 Algoritmos e Estrutura de Dados Construtores na Herança Os construtores nunca são herdados Todas as classes devem definir os seus próprios construtores, incluindo as subclasses Quando nenhum construtor é explicitamente declarado, o compilador gera automaticamente o construtor por defeito. Todos os atributos devem ser convenientemente inicializados, incluindo os herdados (em Java, um atributo pode ser inicializado logo na sua declaração – como sabe, em C++ tinha que ser sempre nos construtores). A primeira instrução, dentro do corpo de um construtor de uma subclasse, deve invocar o construtor da classe base, para inicializar os atributos herdados O construtor da classe base é explicitamente invocado com a palavra super, e os parâmetros adequados; Se o construtor da classe base não for invocado de forma explicita, nem um outro da própria subclasse, então é implicitamente invocado o construtor por defeito da classe base (que terá que existir). POO com Java 8 Algoritmos e Estrutura de Dados Exemplo de Herança Entenda-se por Progression como sendo uma sequência de termos numéricos (sucessão), em que cada termo é determinado em função de um ou mais termos precedentes: Arithmetic Progression – cada termo resulta da adição de uma constante ao termo que o antecede; Geometric Progression – cada termo resulta da multiplicação de uma constante pelo termo que o antecede; Fibonacci Progression – cada termo resulta da adição dos dois termos imediatamente anteriores; POO com Java 9 Algoritmos e Estrutura de Dados A classe base Progression [1/5] Invocação de um outro construtor da mesma classe – neste caso, do que se encontra logo a seguir. POO com Java 10 Algoritmos e Estrutura de Dados A classe base Progression [2/5] POO com Java 11 Algoritmos e Estrutura de Dados A subclasse ArithmeticProgression [3/5] Repare-se na palavra que é usada para indicar que a classe está a ser criada por derivação de uma outra. Invocação do construtor da classe base Progression. POO com Java 12 Algoritmos e Estrutura de Dados A subclasse GeometricProgression [4/5] POO com Java 13 Algoritmos e Estrutura de Dados A subclasse FibonacciProgression [5/5] POO com Java 14 Algoritmos e Estrutura de Dados