Conceitos Básicos POO - Programação Orientada a Objetos. Este tipo de programação trata os elementos da linguagem de maneira semelhante aos objetos reais. Packages - É semelhante ao conceito de biblioteca de funções, sendo que um package (pacote) é um conjunto de classes, que ficam num diretório com o mesmo nome do pacote. O .* diz ao java para incluir todas as classes do pacote. Import - O import serve para importarmos uma determinada classe dentro de um package, ou para importarmos todas as classes dentro de um pacote. Classes - É um conjunto de objetos com características comuns. Uma classe é como um modelo para a criação de objetos, que tem as mesmas características da classe à qual pertence. Objetos - É um elemento de uma classe. Temos uma classe "funcionários" que é formada pelos objetos "funcionario". Todos os objetos tem em comum o fato de serem funcionários (mesma espécie), mas podem ter características diferentes entre si. Objetos tem variáveis e métodos como também classes. Instância - Uma instância de uma classe é um novo objeto criado dessa classe, com o operador new. Instanciar uma classe é criar um novo objeto do mesmo tipo dessa classe. Uma classe somente poderá ser utilizada após ser instanciada. Métodos - Os métodos representam os estados e ações dos objetos e classes. Variáveis - As variáveis e constantes representam as características dos objetos. – public • Acessível em qualquer classe – private • Acesível somente da própria classe e das que dela herdam “extends” – protected • Proteção intermediária entre private and public • Pode ser acessível por todas as classes do mesmo pacote e pelas que dela herdam “extends” * static - variável pertence à classe, não ao objeto, isso quer dizer que todas as instancias de uma classe enxergam a mesma variável se uma delas modificar o valor vai refletir p/ todas as outras instâncias. * final – variável pertencente ao objeto, um valor constante para a instância em que for declarado. Casting - Alguns valores são incompatíveis se você tentar fazer uma atribuição direta, para isso o casting visa formatar um valor para ser aceito por uma variável. Ex. long x = 10000; int i = (int) x; Interface - É a declaração de um conjunto de constantes e métodos sem qualquer implementação, usando a palavra implements. É o conjunto de requisições que um objeto pode atender. Superclasse - Todas as classes são criadas tendo outra como base. A classe que gerou a outra é chamada de superclasse. E fazemos referência à superclasse de uma classe usando a palavra extends. A classe gerada é chamada de subclasse. Toda classe tem uma subclasse. Construtores - São usados para inicializar objetos. É o método que tem o mesmo nome da sua classe. Não pode ter um tipo de retorno e é chamado pelo operador new. Polimorfismo - É a capacidade de um método executar a ação adequada dependendo do tipo de objeto. Herança - Quando a subclasse herda as características da superclasse. Denota especialização. Encapsulamento - É o empacotamento (encapsulamento) de variáveis e métodos, ocultando a implementação do usuário. Representa reutilização, segurança e facilidade de manutenção. JVM - Java virtual machine. Quando um programa Java é compilado um código intermediário é gerado, chamado de bytecode. Este bytecode é interpretado pelas máquinas virtuais java. JRE - Java Runtime Environment, ambiente de execução Java, formado pela JVM e bibliotecas, tudo que você precisa para executar uma aplicação Java. SDK - Software Development Kit é um conjunto de ferramentas de desenvolvimento. Um SDK inclui exemplos de código, informações técnicas e outros documentos de suporte. JDK - Java Development Kit: É um subconjunto de um SDK, que é responsável por escrever e rodar programas em java. Exemplo JDK do Java SE (Standard Edition). Java Platform, Standard Edition (Java SE) para desenvolvimento de aplicações java para desktop. Java Platform, Enterprise Edition (Java EE) para desenvolvimento de aplicações java para web. Java Platform, Micro Edition (Java ME) para desenvolvimento de aplicações java para dispositivos móveis. API - Application Programming Interface, Interface de Programação de Aplicativos. Esta interface é o conjunto de padrões de programação que permite a construção de aplicativos e a sua utilização de maneira não tão evidente para os usuários. Exemplo 1: package clas; public class Cliente { private String nome; private String cpfcnpj; public String getNome() { return nome; } public void setNome(String nome) {this.nome = nome;} public String getCpfcnpj() {return cpfcnpj;} public void setCpfcnpj(String cpfcnpj) {this.cpfcnpj = cpfcnpj;} } Exemplo 2: public class Funcionario { private String nome; private String cpf; private double salario; public class Gerente extends Funcionario { private int senha; public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public boolean autentica(int senha) { if (this.senha == senha) { System.out.println("Acesso ok!"); return true; } else { System.out.println("Sem Acesso!"); return false; } } public String getCpf() { return cpf; } public void setCpf(String cpf) { this.cpf = cpf; } public double getSalario() { return salario; } public void setSalario(double salario) { this. salario = salario; } public double getBonificacao() { return this.salario * 0.10; } } public double getBonificacao() { return this.salario * 0.15; //ou invocando método reescrito return super.getBonificacao() + 1000; } } class TestaGerente { public static void main(String[] args) { Gerente gerente = new Gerente(); // podemos chamar metodos do Funcionario: gerente.setNome("João da Silva"); // e tambem metodos do Gerente! gerente.setSenha(“4231”); Gerente gerente = new Gerente(); gerente.setSalario(5000.0); System.out.println(gerente.getBonificacao()); } } polimorfismo é a capacidade de uma referencia de um tipo genérico referenciar um objeto de um tipo mais especifico, veja o exemplo a seguir, o tipo da variável é Carro, mas o objeto colocado nela não é Carro e sim Ferrari e Fusca. Exemplo 3: public interface Carro{ public void acelerar(); } public Ferrari implements Carro{ public void acelerar(){ System.out.println("Ferrari acelerando..."); } } public Fusca implemets Carro{ public void acelerar(){ System.out.println("Fusca tentando acelerar..."); } } class TestaCarro { public static void main(String[] args) { Carro c = new Ferrari(); c.acelerar(); c = new Fusca(); c.acelerar(); } }