Gente, preciso de ajuda

Faça um programa em Java que contenha uma classe chamada Aluno. Esta classe deverá conter os atributos nome (string), matrícula (string) , série (string) , Nota1, Nota2 e Nota3 (float). Fazer os getters e setters e encapsular todos atributos. As notas só poderão aceitar valores de 0 a 10 (usar exception para fazer esta validação). Fazer um método chamado getMedia() para retornar a média das 3 notas.

Eu realmente estou perdida… eu crio as classes e strings, mas não estou entendendo muito bem sobre setters e getters, não consegui fazer funcionar até agora

Getters e Setters são usados quando encapsulamos os atributos de uma classe, isto é, modificamos sua visibilidade através da palavra-chave private.
Graças a isso, os atributos estão visíveis somente para a classe onde foram criados, e não podem ser modificados ou utilizados diretamente por classes externas.

Usamos Getters e Setters para conseguirmos contornar essa condição e usar esses atributos em classes externas, mesmo que sua visibilidade seja privada.

A função dos dois é bem simples:
Um Setter atribui um valor à um atributo.
Um Getter recupera o valor de um atributo.

Exemplo:

private String nome;

public String getNome(){ //Isso é um getter
    return nome;
}

public void setNome(String n){ //Isso é um setter
    nome = n;
}

Toda vez que quisermos modificar o atributo nome, iremos usar o método setNome() e passariamos como argumento o valor que queremos que ele assuma.
Toda vez que quisermos recuperar/utilizar o valor do atributo nome, iremos usar o método getNome()

setNome("Joao"); //joao agora é o valor do atributo nome
System.out.println("O nome é " + getNome()); //vai imprimir: O nome é Joao

A implementação deles é SEMPRE a mesma.
Todo atributo privado deve ter seu proprio Getter e Setter.

1 curtida

Se vc está com duvida nisso quer dizer q vc n sabe muito de java, Curso em video do Gustavo Guanabara e a Loiane do curso de java dão o basico muito bem e facil de entender procura q vc vai aprender.

O Milton @Zeca_Peteca já deu uma luz boa. Deixa eu tentar ir um ponto antes.

Quando você cria uma classe, você precisa de atributos. Esses atributos podem ter alteradores de visibilidade.

Então um atributo pode ser visto só pela classe; pela classe e as que herdam ela; pelas classes do mesmo pacote; ou por todo mundo.

Imagine como se fosse um caderno seu… você pode deixar suas amigas lerem; todas as pessoas da sua sala; todas as pessoas da sua faculdade; ou só você mesma. Isso é a visibilidade dos atributos.

Outra forma de ter acesso a esses dados é por getters (“pegadores”) e setters (“definidores”).

Então você cria métodos (funções) que dão acesso a algumas variáveis (atributos), conforme necessidade. Isso funciona dentro de uma coisa chamada “encapsulamento”, que é um dos princípios a orientação a objetos.

Sobre os getters (coletar informações armazenadas)

Pense num atributo de senha (password). Você pode ter uma função que compare o que o usuário digitou com a senha armazenada; mas você não pode simplesmente deixar outra classe exportar a senha limpa para o usuário, pois isso seria uma brecha de segurança imensa.

Então nem todos os getters podem ser usados. Existem atributos que não convém ter getters.

Sobre os setters (definidores)

Eles servem para definir valores dos atributos. Vamos supor que você tenha uma classe chamada Cachorro. Esse cachorro tem vários atributos, entre eles a raça, o tamanho, as cores, o nome dele etc. Você pode criar um objeto e instanciar ele já passando esses atributos. Ou você pode instanciar uma classe dessas e depois passar os atributos.

Essa passagem de valores depois é feita por meio dos setters.

ISSO É UM RESUMO. Recomendo ler a teoria mais a fundo para pegar bem a ideia.

=============

Então sobre seu problema, você vai ter duas classes: a Principal e a Aluno.

public float getMedia() {
}

É um getter. Veja que ele começa com “get”, e isso é o emprego das boas práticas de programação. Ele coleta um dado do teu objeto.

A questão das notas, você pode fazer um IF, algo como

public void setNota(float notaDigitada) {
    if ((nota >= 0.0) && (nota <= 10.0)) {
        println("Nota válida");
        this.nota = notaDigitada;
        } else {
            println("Nota inválida");
            }

Neste caso você está fazendo um setter, definindo uma nota.

Entendeu a lógica?

Tenta aí e posta aqui o resultado, para esclarecermos as dúvidas específicas.

Bons estudos! E seja bem vinda ao fórum!

PS: quando tiver mais experiência, lembre de voltar aqui e ajudar aos novatos.

1 curtida