310 likes | 439 Views
Orientação a Objetos. Paradigma. Revisão. Dúvidas da aula passada? Características de Java Compilador vs. Interpretador. Hello World Tipos Primitivos Operadores Casts Ok?. Trabalhando com Objetos. Classes Métodos Atributos Construtores Objetos Pacotes. Classes.
E N D
Orientação a Objetos Paradigma
Revisão • Dúvidas da aula passada? • Características de Java • Compilador vs. Interpretador. • Hello World • Tipos Primitivos • Operadores • Casts • Ok? Davi Pires {dpr@cin.ufpe.br}
Trabalhando com Objetos • Classes • Métodos • Atributos • Construtores • Objetos • Pacotes Davi Pires {dpr@cin.ufpe.br}
Classes • “Fôrmas” de objetos. • Define propriedades comuns a um conjunto de objetos pertencentes à classe. Objetos ou Instâncias Instanciação Classe Davi Pires {dpr@cin.ufpe.br}
Classes Davi Pires {dpr@cin.ufpe.br}
Classes • Devem estar definidas em arquivos com o mesmo nome da classe. • Tudo que você fará em Java estará dentro de uma classe. • Acostume-se com elas! Davi Pires {dpr@cin.ufpe.br}
O que tem no corpo da classe? • Atributos • “Características” de um objeto daquela classe. • Construtores • Inicializadores de objetos. • Métodos • Ações passíveis de serem executadas sobre os objetos daquela classe. Davi Pires {dpr@cin.ufpe.br}
1234 3456 0,50 10,00 Atributos • Também chamados de variáveis de instância. • Variáveis que pertencem a cada objeto. • Todo objeto tem, com valores possivelmente diferentes. • Podem ter valores padrão. Conta Conta c1 numero saldo Conta c2 Davi Pires {dpr@cin.ufpe.br}
Atributos • Exemplos: • Atributos1.java • Conta.java Davi Pires {dpr@cin.ufpe.br}
Métodos • Ações passíveis de serem executadas sobre objetos de uma classe. • Podem receber parâmetros para executar sua computação. • Podem retornar valores para quem chamou o método. • Exemplo: dado o objeto c1, do tipo Conta: • c1.getSaldo(): não tem parâmetros e deve retornar o saldo da conta c1 (que é um double). • c1.creditar(3.0): credita $3,00 na conta c1. Não precisa retornar nada (a princípio). Davi Pires {dpr@cin.ufpe.br}
Métodos • Assinatura de Métodos. Tipo de Retorno nomeDoMetodo ( lista de parâmetros ) Exemplo: double getSaldo ( ) void creditar ( double valorASerCreditado ) void transferir ( double valorASerTransferido, Conta destino ) Davi Pires {dpr@cin.ufpe.br}
Métodos • Lista de parâmetros • Pode ser vazia • Tipo de retorno • Tipo void: indica que não o método não retorna nada. • Parâmetros só são visíveis dentro dos métodos. • Variáveis locais. double getSaldo ( ) void creditar ( double valorASerCreditado ) Davi Pires {dpr@cin.ufpe.br}
O comando ‘return’ • Em métodos com tipo de retorno diferente de void, precisamos retornar um valor. • O valor retornado é especificado usando o comando return; • Após atingir a cláusula return, a execução do método é interrompida. Davi Pires {dpr@cin.ufpe.br}
Como é mesmo o corpo de uma classe? • Já temos bastante coisa para preencher o corpo de uma classe agora. • Veja em ContaComMetodos.java o que você já sabe fazer. • Faça os 2 exercícios mostrados no arquivo. • Compilem o arquivo [use o comando javac] para checar se há erros. Davi Pires {dpr@cin.ufpe.br}
Enfim, Objetos! • Java é Orientada a Objetos. • O que é isso? • O que é um paradigma? • pa.ra.dig.ma: s. m. • 1. Modelo, protótipo. • 2. Gram. Conjunto de fórmulas de palavras variáveis que servem de modelo para as demais do mesmo grupo mórfico. Davi Pires {dpr@cin.ufpe.br}
Objetos • Programação orientada a objetos (POO) • quer dizer que tudo que você fará serão objetos. • Classes são tipos. • Objetos são variáveis desse tipo. • Abstrações de objetos do mundo real são obtidas através da instanciação de objetos de classes que representem esses objetos. • É a maneira como você analisa um problema real. • É uma maneira de ver o mundo. Davi Pires {dpr@cin.ufpe.br}
Orientação a Objetos • “Numa biblioteca são guardados livros. Uma (ou mais) bibliotecárias organizam os livros em prateleiras. Os usuários podem alugar os livros. Ao fim do prazo estabelecido, devem retorna-lo à Biblioteca entregando-o à bibliotecária. Usuários VIP podem alugar mais de 3 livros por mês.” Davi Pires {dpr@cin.ufpe.br}
Composição • Objetos como atributos de objetos. Davi Pires {dpr@cin.ufpe.br}
Composição • Permite reutilização de código. • Modularização. • Escreve e testa • se funcionar, pode ser usado em outras partes do projeto. • Isolamento dos bugs em partes separadas do projeto facilita manutenção. • Enfim, ALTA QUALIDADE DE SOFTWARE PODE SER ATINGIDA COM POO. Davi Pires {dpr@cin.ufpe.br}
Instanciando objetos • O comando new: • Cria um novo objeto da classe especificada e inicializa seus atributos. • Pode receber parâmetros, desde que definido dentro da classe. • Construtores • Métodos especiais dentro das classes especificando como devem ser inicializados os atributos. Davi Pires {dpr@cin.ufpe.br}
Construtores • Não têm tipo de retorno. • Têm o mesmo nome da classe. Davi Pires {dpr@cin.ufpe.br}
Instanciando objetos • Exemplo: • Usando um construtor padrão: • ContaExemplo.java • Usando um construtor específico. • ContaExtendida.java Davi Pires {dpr@cin.ufpe.br}
A palavra this • Refere-se sempre ao objeto sobre o qual o método foi chamado. • Num construtor, refere-se ao objeto que está sendo instanciado. Davi Pires {dpr@cin.ufpe.br}
A palavra this • Geralmente é dispensável, mas facilita a leitura do código. Davi Pires {dpr@cin.ufpe.br}
A palavra this • Exemplo • ContaThis.java Davi Pires {dpr@cin.ufpe.br}
O valor null • Variáveis cujos tipos são objetos são por default inicializadas com valor null. • Não é permitido acessar métodos ou atributos de objetos null. • NullPointerException! Davi Pires {dpr@cin.ufpe.br}
Sobrecarga de Construtores • Classes podem ter vários construtores. • Cada um com uma lista diferente de parâmetros. • Exemplos: • ContaConstrutores.java Davi Pires {dpr@cin.ufpe.br}
E agora, o corpo da classe...? • A nossa classe Conta agora pode ser extendida para incluir construtores. • Assim ela poderá ser propriamente instanciada. • Já é uma boa classe para ser incluída num projeto real. • Teste antes! Davi Pires {dpr@cin.ufpe.br}
Exercício • Escolha um restaurante que você visite com alguma freqüência. Imagine como você modelaria um software para este restaurante. • Quanto maior a automatização, mais $! • E também maior a complexidade! • Cuidado! Davi Pires {dpr@cin.ufpe.br}
Exercício • Escrevam essa modelagem da forma que quiserem • Caixas e setas, texto, UML... • Duplas, se quiserem. • Escrevam pelo menos 2 classe em Java • Pensem em Objetos! • djfskjdf • jkbsdkfjsjdfksbdfksdjfsfksjdbksfbdksjfskkjfsgjdsfkgbjdslçkfjgbçsdkfjgbçdksjfbgçkdfsjgbsdkç • kjdbfsk • sdjsfkgbdlçsifgbdfgjsdfkgsgfkdsfgbdslkfjgbldskjfgbsdkljjgbdkfjgbdkfjgbdfjgbsçfogbsdçfkgjsdçgksdffsdlfknsdlfsfd Davi Pires {dpr@cin.ufpe.br}
Este trabalho está licenciado sob uma Licença Creative Commons Atribuição-Uso Não-Comercial-Compatilhamento pela mesma licença. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-sa/2.0/br/ ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.