Programação II Programação Orientada a Objetos Disciplina ● Ementa ○ Estudo do paradigma orientado a objetos e tópicos relacionados. Ambientes de Desenvolvimento. ● Carga horária ○ 120 horas / 144 aulas ● Máximo de faltas ○ 36 Disciplina ● Contato ○ [email protected] ● Horário de atendimento ○ sextas-feiras: 8:00 às 12:00 horas ● Materiais ○ www.merlin.pro.br Disciplina ● Conteúdo da disciplina ○ Classes e objetos ○ Atributos e métodos / sobrecarga e sobrescrita ○ Herança ○ Modificadores ○ Interfaces / classes abstratas ○ Programação genérica ○ Exceções Orientação a Objetos Orientação a Objetos ● Paradigma de desenvolvimento ● Baseado em classes e objetos ● Vantagens ○ Facilita o reuso ○ Facilita a leitura do código ● Se for Java… consome muita memória Classes ● Classes são as estruturas que definem os atributos e comportamentos comuns a um determinado elemento ● Atributos: características dos objetos ● Comportamento: ação executada por um objeto que pode alterar seu estado interno ou enviar uma mensagem ● Mensagem: chamada a método Classes ● Nome da classe deve iniciar com maiúscula ● O arquivo de código fonte deve ter o mesmo nome da classe com a extensão .java ● Tudo deve estar dentro da classe (exceto declaração de pacote e importações) Classes ● Exemplo public class Carro { // atributos // métodos } Atributos ● Atributos são variáveis de instância ○ São características que cada objeto terá ● Podem ser tipos primitivos ou classes Java ● Não confundir com variáveis locais Atributos ● Exemplo public class Carro { String marca; int velocidade; } // classe // tipo primitivo Métodos ● ● ● ● Métodos são ações que os objetos podem executar Podem alterar o estado do objeto Podem receber parâmetros e retornar valor Exemplo void acelerar ( ) { velocidade++; } Métodos public class Carro { String marca; int velocidade; void acelerar( ) { velocidade++; } } // classe // tipo primitivo Métodos public class Carro { String marca; int velocidade; void acelerar( ) { velocidade++; } } // classe // tipo primitivo Métodos ● Métodos têm acesso aos atributos da classe class Carro { int ano; int velocidade; void acelerar(int velocidade ) { velocidade++; } } Métodos ● Métodos podem receber parâmetros class Carro { int ano; int velocidade; public Carro(int ano) { this.ano = ano; } } Construtores ● ● ● ● São “métodos” que criam objetos da classe Têm o mesmo nome da classe sem o tipo de retorno Podem receber parâmetros Variáveis de instância devem ser inicializadas dentro dos construtores Construtores public class Carro { String marca; int velocidade; // classe // tipo primitivo public Carro ( ) { marca = “ “; velocidade = 0; } } Instanciando Objetos ● Instanciar significa “criar” um objeto ● Cada objeto é uma instância da classe ● Cria-se objetos chamando-se o construtor Carro carro = new Carro( ); Instanciando Objetos Escopo das Variáveis Ciclo de Vida de Objetos ● Um objeto passa a existir quando ele é criado (operador new) ● Um objeto deixa de existir quando ele é coletado pelo coletor de lixo (garbage collector) ● Um objeto deixa de ser acessível ○ quando fica fora de escopo ○ quando null for atribuído à variável de referência ○ quando outro objeto for atribuído à variável de referência Exercício ● Crie uma classe para representar uma lâmpada, com pelo menos: ○ um atributo que indique se está acesa ou apagada ○ um construtor que inicialize os objetos “apagados” ○ um método para acender a lâmpada ○ um método para apagar a lâmpada ● Crie casos de teste para a lâmpada Exercício ● Crie uma classe para representar um Livro com os campos: ○ ○ ○ ○ Título Ano de publicação Nome da editora Autor ● Autor deve ser um objeto com os campos: ○ ○ Código Nome Exercício ● Crie uma classe para representar uma Biblioteca com, pelo menos, os métodos ○ adicionar livro ○ remover livro ○ emprestar livro