Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem de Programação II Prof. Márcio Artacho Peres marcio.peres@ifms.edu.br Linguagem de Programação II ● Criando uma classe: ● Abra um editor de texto (ou IDE) e digite o código abaixo; ● Salve com o mesmo nome da classe mais “.java”; – Obs.: class indica a definição de uma classe; – Cada classe deve ficar em um arquivo separado. – Por padrão utiliza-se nome da classe com a letra inicial maiúscula; Linguagem de Programação II ● Criando uma classe (outro Exemplo): Linguagem de Programação II Criando um objeto: ● Vamos criar um objeto da classe Carro, isso é chamado de instanciação, ou seja, criaremos uma instância da classe Carro. ● Um objeto ou instância é criado através do operador new. Linguagem de Programação II ● O teste da classe criada é realizado através de outra classe principal (PessoaTeste), que contém o método main. ● Instanciando os objetos da classe Pessoa: //cria uma instância de um objeto da classe Pessoa Pessoa p1 = new Pessoa(); p1.nome = "Maria"; p1.idade = 38; //cria uma instância de um objeto da classe Pessoa Pessoa p2 = new Pessoa(); p2.corDoCabelo = "Preto"; p2.nome = "João"; int somaIdades = p1.idade = p2.idade; System.out.print("Soma:" + somaIdades); Linguagem de Programação II ● Para compilar um programa com multiplas classes utilizamos o comando: javac PessoaTeste.java Pessoa.java ou javac *.java que compila todos arquivos .java da pasta. ● Dois .class são gerados. ● Para executar: java PessoaTeste ● É o .class que contém o método main. Linguagem de Programação II Getters e Setters em Java ● São métodos que padronizam as formas de acesso aos atributos da classe. Seguem um padrão de nome estabelecido iniciando com a palavra get ou set seguido do nome do atributo. ● Getters são os métodos que retornam o valor dos atributos. public <tipoAtributo> get<nomeAtributo>( ) { return <nomeAtributo> ; } ● Setters são os métodos que recebem um valor para os atributos. public void set<nomeAtributo>(tipoAtributo <nomeParametro>) { <nomeAtributo> = <nomeParametro> ; } Linguagem de Programação II Getters ● get – tem o objetivo de retornar um valor contido em um determinado atributo da classe. ● Ex. class Pessoa{ int idade; public int getIdade(){ return idade; } } Linguagem de Programação II Setters ● set – tem o objetivo de ajustar/definir o valor de um atributo. ● Ex.: class Pessoa{ int idade; public void setIdade(int i){ idade = i; } } Linguagem de Programação II ● this? ● This é usado para fazer auto-referência ao próprio contexto em que se encontra. Resumidamente, this sempre será a própria classe ou o objeto já instanciado. class Pessoa{ int idade; public void setIdade(int idade){ this.idade = idade; } } Linguagem de Programação II ● this? ● Exercício: Criar a classe Carro e os métodos que acessem e modifiquem os demais atributos da classe Carro. Linguagem de Programação II ● Métodos Construtores: ● O método construtor é desenvolvido da mesma forma que os demais, a única diferença é: – ele tem o mesmo nome da classe – não possui tipo de retorno. ● O método construtor é invocado no momento da criação do objeto. É possível passar valores iniciais para alguns de seus atributos. Além disso é possível executar outras instruções. Linguagem de Programação II ● Métodos Construtores: ● Toda classe possui um construtor implícito e padrão (default), sem parametros (não recebe nada). Carro meuCarro = new Carro(); Pessoa p1 = new Pessoa(); ● Quando em uma classe define-se outro construtor, não é possível mais usar o construtor padrão a não ser que se defina explicitamente um construtor padrão (sem parâmetros). O construtor padrão pode conter instruções. Linguagem de Programação II ● Exercício: ● Escreva em Java uma classe Contador, que possua um valor usado para contagem de itens ou eventos. Além do construtor que recebe um valor inicial para o contador, a classe deve oferecer métodos que devem: – Zerar o contador; – Incrementar o contador de 1 unidade; – Retornar o valor do contador. Linguagem de Programação II ● Exercício: ● Crie uma classe que representará um Funcionário de uma Empresa. Esta classe deverá possuir atributos tais como: - o seu número de Matrícula (pode ser do tipo Inteiro) - o seu nome - a sua idade - o seu cargo - o seu salário ● Criar os métodos "set" e "get". ● Para esta classe, gere três Métodos Construtores. - o 1º não deve receber parâmetros, mas deve iniciar o valor do salário com R$ 1.500,00 - o 2º deve receber como parâmetro o nome e a idade do funcionário, e preencher estes dois campos com os valores. - o 3º deve receber o número de matrícula, o nome, e o salário, e preencher estes três campos com os valores recebidos. Linguagem de Programação II ● Exercício: ● Crie uma classe que representará um Atleta. Esta classe deverá possuir atributos tais como: - o nome - a idade - o altura - o peso - imc ● Criar os métodos "set" e "get" para todos os atributos. ● Para esta classe, gere três Métodos Construtores. - o 1º deve receber o nome, a altura e o peso e calcular o imc = peso / (altura²). - o 2º deve é o construtor padrão. - o 3º recebe o nome e a altura. - o 4º recebe o nome e o peso. Linguagem de Programação II ● Troca de mensagens: ● Os objetos precisam se “comunicar” (aciona um método de outro). ● Essa comunicação é realizada através do mecanismo de troca de mensagem. ● Ex. O objeto Computador não é capaz de sozinho fazer a impressão de um documento, ele precisa interagir com a impressora. Linguagem de Programação II ● Troca de mensagens: ● a mudança ou leitura do estado interno do objeto através da alteração de um de seus atributos; ● a chamada a um dos métodos do objeto que representam seu comportamento e as tarefas que são capazes de desempenhar. ● Nos sistemas OO, quando objetos de classes distintas possuem uma troca de mensagens frequente (autodependência forte ou cooperarem entre si), é comum estabelecermos um relacionamento entre essas classes. Linguagem de Programação II ● Relacionamentos: ● Qual o relacionamento entre Gerente e Departamento? ● Qual o relacionamento entre Atleta e Time? ● Qual o relacionamento entre Aluno e Disciplina? ● Qual o relacionamento entre Carro e Pessoa? ● Qual o relacionamento entre Ponto2D e Reta2D? ● Os relacionamentos são: – um-para-um; – um-para-muitos; – muitos-para-muitos; Linguagem de Programação II ● Relacionamentos: ● Qual o relacionamento entre Gerente e Departamento? um-para-um ● Qual o relacionamento entre Atleta e Time? um-para-muitos ● Qual o relacionamento entre Aluno e Disciplina? muitos-para-muitos ● Qual o relacionamento entre Carro e Pessoa? um-para-muitos ● Qual o relacionamento entre Ponto2D e Reta2D? um-para-muitos ● Os relacionamentos são: – um-para-um; – um-para-muitos; – muitos-para-muitos; Linguagem de Programação II ● Exemplo: ● Vamos ligar as classes Carro e Pessoa: – 1) esse carro só possa pertencer a uma única pessoa, ou seja, o carro só possui um dono (referencia de pessoa na classe carro); – 2) uma pessoa possua um carro (referencia de carro na classe pessoa) – relação um-para-um. Linguagem de Programação II ● Exemplo: ● 1) Vamos ligar a classe Carro à classe Pessoa: (referencia de pessoa na classe carro) – Adicionar um atributo chamado dono, que é do tipo Pessoa. Linguagem de Programação II ● Exemplo: ● 1) Vamos ligar a classe Carro à classe Pessoa: – Métodos Get e Set; Linguagem de Programação II ● Exemplo:Linguagem de Programação II ● Exemplo: ● 2) Vamos ligar a classe Pessoa à classe Carro: (referencia de carro na classe pessoa) Linguagem de Programação II ● Exemplo: ● pessoa.getCarro().getCor(); Linguagem de Programação II ● Exercício: ● Criar uma classe Ponto2D; – Atributos x e y; – Método (comportamento): ● Construtor Padrão, valores da origem (0,0); ● Construtor que rebece valores para x e para y; ● transladar o próprio ponto – recebe dois valores de de deslocamento em x e em y; ● calcular a distância entre o ponto e outro ponto (pitágoras ● comparação de igualdade com outro ponto; ● Criar uma classe Reta2D; – Atributos dois Ponto2D; – Construtor que recebe dois pontos; – Construtor que recebe quatro valores (x1, y1, x2, y2), valores dos dois pontos da reta; – Método (comportamento): transladar a reta; Linguagem de Programação II ● Modificadores de acesso, são palavras reservadas da linguagem Java cuja utilidade é permitir ou proibir o acesso aos atributos e/ou métodos das classes. ● public: garante que o atributo ou método da classe seja acessado ou executado a partir de qualquer outra classe. ● private: pode ser acessado apenas por métodos da mesma classe, sendo totalmente oculto ao programador (ou outros objetos do sistema) que for usar instâncias dessa classe. ● protected : funciona como o private exceto que as classes filhas ou derivadas também terão acesso ao atributo ou método. Linguagem de Programação II ● Modificadores de acesso ● Package ou Friendly: não são palavras reservadas de modificadores de acesso. Nome utilizado quando os atributos e métodos declarados sem modificadores. Isso significa que podem ser acessados por todas as classes pertencentes a um mesmo pacote. ● Os atributos ou métodos podem ser acessados de onde? ● atributo1? ● atributo2? ● atributo3? ● metodo1? Linguagem de Programação II ● Os atributos ou métodos podem ser acessados de onde? ● atributo1? Dentro da classe ● atributo2? De alguma classe derivada ● atributo3? De qualquer classe do projeto ● metodo1? Dentro da classe ● Modificadores de acesso ● Package ou Friendly: não são palavras reservadas de modificadores de acesso. Nome utilizado quando os atributos e métodos declarados sem modificadores. Isso significa que podem ser acessados por todas as classes pertencentes a um mesmo pacote. Linguagem de Programação II ● Exercício: ● Criar uma classe A, com dois atributos inteiros x1 e x2; – x1 pode ser acessado apenas dentro da própria classe; – X2 pode ser lido por qualquer classe, porém pode ser modificado apenas pela própria classe; ● Criar uma classe B com dois atributs do tipo A, denominados y1 e y2; – Os atributos devem ser acessados apenas pela própria classe. – Criar um método construtor que receba dois atributos A; ● Criar uma classe C que possua uma 40 atributos do tipo A que podem ser acessados por qualquer classe; Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31
Compartilhar