Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre o entendimento das classes

Dentro da linguagem Java, tudo é "classe", e toda classe tem uma função "main" ??

Pergunto pra entender melhor mentalmente a estrutura do todo.

Aprendi apenas a linguagem C, e dentro do C, tudo fica dentro do método main, não havendo uma "classe" que possui um "main" dentro dela.

Um programa em java seria necessariamente uma coletânea de arquivos (e cada arquivo com todo o seu conteúdo dentro de uma grande classe?)

2 respostas
solução!

Oi Eduardo.

Diferentemente de C (embora tenha como seguir um modelo parecido, não é um padrão), Java é uma linguagem orientada a objetos. Objetos são instâncias de uma classe. Isso quer dizer que eu posso criar uma classe e, a partir dela, instanciar diferentes objetos na memória que contarão com todas as propriedades e métodos da classe, porém sem alterar ela em si. Cada objeto novo instanciado conta com tudo da classe, porém são independentes entre si.

A função/método Main() existe tanto no C, quanto no Java, e ela é só uma. Toda vez que você iniciar a sua aplicação, o método Main() será a primeira coisa a ser executada. Ou seja, só pode existir um e ele deve existir, senão o compilador acusará erro. Tente mudar o nome do método ou comentar ele, você verá que a aplicação não vai compilar, logo não será possível executá-la.

No C é possível você criar funções fora da função Main() e chamá-las de dentro da mesma, mas a definição da linguagem segue o paradigma procedural, diferentemente do paradigma de orientação a objetos. Ou seja, em C não existem classes. De toda forma, é possível tentar seguir algo próximo de objetos em C utilizando as structures. Structres é que existe mais próximo do conceito de classe.

Enfim, o ideal é saber que, por definição, as duas linguagens seguem paradigmas diferentes.

Em java você utiliza classes para organizar as regras do seu sistema, e a partir destas classes você poderá instanciar objetos. Cada classe será responsável por alguma coisa no seu sistema, por exemplo:

Sistema de registro de notas da escola Alura:

O sistema precisa armazenar Disciplinas, Turmas, Professores e Alunos.

Em C:

• Criar variáveis representando Disciplinas, Turmas, Professores e Alunos. Sendo que existirão outras variáveis com dados adicionais, como: Nomes, descrições, notas, etc. Além disso, você irá exibir na tela as informações necessárias...

Tudo isso ficará em um único código, esse código vai ter o seu main também.

Em Java:

• Você ainda terá todas essas informações de Disciplinas, Turmas, Professores e Alunos. Contudo, elas vão estar separadas em classes. A classe aluno, por exemplo, irá possuir Nome do Aluno, Cpf, Disciplinas matriculadas, etc.

Depois que você criar essas classes você irá criar mais uma, que pode ser chamada de Principal por exemplo.

Dentro dessa classe você não precisa colocar atributos (nome, CPF, etc), aqui você irá colocar o seu main. A partir desta classe você irá chamar as demais (instanciar objetos).

É algo parecido com chamar funções em C.

Agora observe como fica mais fácil de fazer manutenção:

Caso você tenha que criar um dado adicional para os professores, como idade. Você sabe exatamente onde estão os dados do professor.

Caso a média das disciplinas dos cursos mude de 7 para 6. Em C você mudaria a regra em todos os lugares do código que a usam. Já em java você precisa apenas mudar a classe Disciplinas.