Classes Java
Existem, basicamente, duas metodologias de desenvolvimento de software: a Programação Estruturada (PE) e a Programação Orientada a Objetos (POO).
Na primeira, o objetivo consiste em separar os dados da funcionalidade do programa. Neste caso, as entidades são representadas de forma tal que satisfaçam as restrições da linguagem de programação utilizada. Isso acaba gerando programas que são difíceis de manter e compreender, principalmente se eles forem muito grandes.
Na segunda, a linguagem de programação é que tem de satisfazer as restrições e requisitos das entidades. Isso permite a construção de modelos mais realísticos do mundo, e, portanto, mais fáceis de serem mantidos e compreendidos.
Vamos tomar como exemplo a representação de um carro. Vamos descobrir que cada metodologia modela de forma diferente esse carro.
Na PE, por exemplo, um carro é representado por um conjunto de funções (trechos de código) responsáveis por ligar, frear, estacionar, acelerar e assim por diante. Um conjunto separado de variáveis define a cor do carro, seu modelo, fabricante e demais características. Você deve então inicializar (atribuir valores) às variáveis do carro e chamar algumas das funções para manipular estas variáveis para que o carro funcione.
Já na POO, o carro é visto como uma integração de seus comportamentos (suas funções) e atributos (variáveis) que mantêm o estado atual do carro. A integração destes atributos e comportamentos resulta em um objeto. A criação deste objeto é simples e faz com que ele seja inicializado ao mesmo tempo sem comandos adicionais. Neste caso, um programa orientado a objetos pensa em objetos e não em funções e variáveis separadas e soltas (na PE o programador é que sabe quais funções e quais variáveis pertencem ao carro; na POO, o próprio programa controla isso para o programador).
A integração destes atributos e comportamentos em objetos é chamada de "encapsulamento". O encapsulamento também