Baixe o app para aproveitar ainda mais
Prévia do material em texto
Thiago Rodrigues POO 1 Programação Orientada à Objetos Fatores de Qualidade em Software ● Correção, Robustez, Eficiência, Extensibilidade, Reusabilidade, Portabilidade, Integridade, ... Solução: Modularidade ● Possibilita: – Extensibilidade. – Reusabilidade. ● MÓDULO é um componente de software compilado separadamente. – Orientação por objetos. Thiago Rodrigues POO 2 Conceitos de POO Classe: – Implementação de um Tipo Abstrato de Dados (T.A.D.) – T.A.D. = Estrutura de Dados + Operações – Adoção/Utilização de Mecanismos para : ● Encapsulamento ● Polimorfismo ● Herança Forma geral: <espec de acesso> class <nome> { <atributos e métodos> } public class JTeste{ int dado; void set_dado(int x){ dado = x; } int get_dado(){ return dado; } } Thiago Rodrigues POO 3 Atributos são os dados contidos em cada classe, podem ser vistos como as “variáveis” da classe; Métodos são os subprogramas utilizados para manipular os atributos da classe; class Conta { double salario; double saldo; void saca(double quantidade) { double novoSaldo = this.saldo - quantidade; this.saldo = novoSaldo; } void deposita(double quantidade) { this.saldo += quantidade; } } Thiago Rodrigues POO 4 • A cláusula public não é obrigatória, mas é essencial para modilariadade e reusabilidade; • Um arquivo .java pode conter várias classes, entretanto somente uma única classe pode possuir a cláusula public; • A classe public é quem vai dar o nome do arquivo; class JDado{ ... } public class JMain { public static void main(String[] args) {... } } Objeto: • Uma classe pode ser vista como um “tipo de dado” (TAD); • Para se manipular um tipo de dado qualquer é necessário uma variável; • Um objeto pode ser visto como uma “variável”, utilizado para manipular os atributos e métodos de uma classe; Thiago Rodrigues POO 5 Forma geral da declaração de objetos <classe> <objeto>; JTeste obj; Modelo Referencial: • Java utiliza o modelo referencial, isto é, objetos são armazenados como apontadores; • É necessária uma operação explícita de criação ou alocação do objeto em memória (“Instancialização”); • A instancialização é realizada por um método especial chamado construtor; • Em Java todo construtor possui o mesmo nome da classe; <objeto> = new <construtor>(); obj = new JTeste(); Thiago Rodrigues POO 6 Programa-Exemplo class JPonto{ int x, y; void SetX(int i){ x = i; } void SetY(int i){ y = i; } int GetX(){ return x; } int GetY(){ return y; } } public class JMain { public static void main(String[] args) { JPonto P1,P2; P1 = new JPonto(); P1.x = 10; P1.y = 15; //ou P1.SetX(10); P1.SetY(15); P2 = P1; //Atribuição do endereço de P1 a P2 System.out.println(P2.GetX()); System.out.println(P2.GetY()); } } P2 BA326 FF012 P1 10 15 BA326 BA326 DF501 Thiago Rodrigues POO 7 Exercício: Crie uma classe chamada JAluno com os seguintes atributos: • Matricula: Inteiro; • Nome: String; • Idade: inteiro; • Sexo: caracter; • Método para imprimir os dados de cada atributo; Crie um programa principal para atribuir valores aos atributos e imprimi-los; Thiago Rodrigues POO 8 Thiago Rodrigues POO 9 Controle de Acesso em Java • public - permite acesso a partir de qualquer classe • private - permite acesso apenas na própria classe Obs: quando nenhum modificador de acesso é oferecido, o método e/ou a variável são definidas como tendo acesso de pacote. Métodos e Atributos são “vistos” por outras classes no mesmo pacote (arquivo); class JPonto{ private int x, y; public void SetX(int i){ x = i; } public void SetY(int i){ y = i; } public int GetX(){ return x; } public int GetY(){ return y; } } public class JMain { public static void main (String [] args){ JPonto obj; obj = new JPonto(); obj.SetX(10); obj.SetY(15); obj.x = 30; //ERRO } } Thiago Rodrigues POO 10 Criando e Importando Pacotes • A cláusula package é utilizada para especificar que sua classe será um pacote, podendo ser reutilizada por outras classes. • É necessário que a classe seja public para que possa ser reutilizada por outras classes; • O nome do pacote colocado junto com a cláusula package especifica o caminho no diretório onde o arquivo .class será criado. package classes; public class Jteste(){ public double Sqr(double x){ return x * x; } } classes Jteste.java Thiago Rodrigues POO 11 • A reutilização de outras classes deve ser especificada pela cláusula import seguida do nome do pacote; import classes.Jteste; public class JMain(){ public static void main(String args[]){ Jteste obj = new Jteste(); double y = obj.Sqr(5); } } Thiago Rodrigues POO 12 Entrada de dados - Classe Scanner • Java possui diversas formas de entrada de dados via teclado, uma delas é utilizando a classe Scanner; • É necessário improtar a classe Scanner, criar e instancializar um objeto da classe e utilizar os métodos para fazer a leitura; • Os mais comuns são: – next() – nextLine() – nextBoolean() – nextByte() – nextInt() – nextLong() – nextShort() – nextLong() – nextDouble() – nextFloat() Thiago Rodrigues POO 13 import java.util.Scanner; public class Main { public static void main(String[] args) { //Cria um Scanner para entrada de dados a partir da //janela de comando Scanner in = new Scanner(System.in); String nome; int idade; float salario; System.out.print("Digite o nome: "); nome = in.next(); //lê uma String para a variável nome System.out.print("Digite a idade: "); idade = in.nextInt(); //lê um inteiro para a variável idade System.out.print("Digite o salário: "); salario = in.nextFloat(); //lê um float para a variável salário System.out.println("Os dados informados foram:" + nome + " - " + idade + " - " + salario + "."); } } Thiago Rodrigues POO 14 Public class Programa1{ public static void main(String[] args){ System.out.println("Hello, world!"); } } Programa Principal public : indica que o método é público. Se o método main não for público, ao tentar executar o programa, será exibida a mensagem de erro Main method not public. static: indica que o método main existe e pode ser utilizado mesmo se nenhum objeto da classe tenha sido instanciado. void: não retornará valor algum. String[] args: define o parâmetro que pode ser passado para o programa principal.
Compartilhar