O paradigma da programação orientada a objetos
A Programação Orientada a Objetos é um paradigma computacional com o objetivo de aproximar os programas à realidade a partir de uma série de conceitos e metodologias como Classe, Objeto, Atributo, Método, Herança, Interface e Polimorfismo.
Trataremos a seguir dos detalhes de cada um desses conceitos:
Classe é uma coleção de definições para um objeto, ou seja, descreve um conjunto de características afins que delimitam certo objeto em estudo. Por exemplo, a classe InstrumentoMusical, pois apesar de consistir em uma infinidade de instrumentos diferentes, todos tem métodos e atributos em comum como tocar um som, se é acústico ou elétrico, cores, etc.
Objeto é a instância de uma classe, é elemento em si que representa alguma entidade. Por exemplo, um violão, um piano, um saxofone, etc.
Atributos são as características que um objeto pode assumir como cores, material. Estes atributos são definidos na criação da classe. Por exemplo, violão com cordas de nylon, guitarra azul.
Método é uma funcionalidade do objeto definida na classe. Por exemplo, a classe InstrumentoMusical possui o método tocar. Então uma guitarra irá herdar o método tocar, mas pode também ter métodos próprios como usar a alavanca da guitarra para efeitos de distorção de som que são únicos da guitarra.
Herança é uma técnica da POO onde uma entidade (subclasse) pode herdar características (atributos) e funcionalidades (métodos) de uma entidade superior (superclasse) mais abstrata. Com o uso desta técnica é possível programar sistemas extensíveis, pois uma classe poderá utilizar diversos métodos de uma superclasse e sobrescrever apenas alguns poucos métodos, onde estariam definidas as peculiaridades dessa classe específica.
Interface. Em Java, uma classe não pode herdar várias classes ao mesmo tempo, então o conceito de Interface foi criado pra resolver este problema. É importante salientar os métodos da interface são implicitamente