Independente da linguagem de programação, os conceitos apresentados são sempre os mesmos.
Nesta abordagem utilizarei a linguagem
Java. Por quê? Porque considero uma linguagem mais didática, mais fácil de demonstrar os conceitos, e até mesmo, porque é uma tecnologia livre e multiplataforma, não importando se você vai compilar o programa num ambiente
Linux ou outro qualquer.
Abstração
Em OO,
abstração é o principal dos conceitos, representando a capacidade do projetista/desenvolvedor de captar apenas a essência dos objetos que irão compor a solução num sistema de software. Antes de modelar ou codificar um sistema, de qualquer natureza, abstrair a situação é sempre o primeiro passo.
Classes
Uma
classe, em poucas palavras, é a definição de características ou propriedades que tornam determinados objetos similares e membros de um mesmo grupo. Uma classe não é um objeto mas o representa estruturalmente. Todo objeto é tipificado por uma classe, assim, uma classe representa um tipo de objeto, sendo uma expressão de sentido amplo.
Atributos
Atributo é toda e qualquer característica intrínseca a um determinado objeto, ou seja, são as propriedades inerentes à própria existência do objeto, dela dependendo.
Métodos
Dá-se o nome de
método a toda e qualquer ação que um determinado objeto possa realizar ou sofrer. Os métodos tornam possíveis a troca de mensagens entre objetos e também criam mecanismos através dos quais um objeto dentro de um sistema, possa se comunicar com o mundo real.
Encapsulamento
Encapsulamento é uma técnica cujo principal objetivo é garantir a segurança das informações de um objeto. Consiste em se definir todos os atributos de uma classe e os métodos que implementam operações internas como privados ou protegidos (dependendo do contexto) e todos os demais métodos como públicos, possibilitando a coleta ou alteração das propriedades, sem que contudo haja uma manipulação direta dos atributos.
Associação
Associação, para quem já estudou análise, ou mesmo iniciou o estudo de alguma disciplina sobre banco de dados, é o equivalente a um relacionamento. Na verdade Associação é um relacionamento. Duas classes são participantes de uma associação quando uma ou mais características de uma delas, depende de alguma(s) propriedade(s) da outra.
Hierarquia de classe
Hierarquia é um relacionamento através do qual diversas classes compartilham características comuns com base em uma superclasse.
Superclasse
Dentro de uma hierarquia, a
superclasse ou classe-mãe é a classe da qual as subclasses devem herdar diretamente os atributos e métodos.
Subclasse
Subclasse ou classe filha, em uma hierarquia é uma classe que herda direta ou indiretamente de outra classe superior (superclasse ou classe-mãe).
Herança
Herança é o compartilhamento de características entre diferentes objetos de classes diferentes.
Herança simples
Ocorre quando uma classe herda suas características de apenas uma única superclasse. É o tipo primário de herança em Java.
Herança múltipla
Ocorre quando uma classe herda suas características de mais de uma classe ou interface. Em Java, a herança múltipla é realizada pelo uso de implementações de interfaces.
Interfaces e classes abstratas
Interfaces e classes abstratas são mecanismos de definições de características genéricas para objetos.
Classes abstratas
Uma
classe abstrata é geralmente uma superclasse a qual nunca poderá ser instanciada. Uma classe abstrata pode ou não conter métodos abstratos, mas obrigatoriamente, se ela contiver pelo menos um método abstrato, ela será uma classe abstrata.
Métodos abstratos
Métodos abstratos são métodos com cabeçalho definidos porém sem implementação funcional.
Interfaces
Uma interface e uma classe abstrata têm em comum o fato de que ambas possibilitam a implementação de herança e compartilhamento de características entre objetos. Mas morre nisso. Obrigatoriamente, uma interface é um conjunto de métodos não implementados.
Objeto
Um
objeto é uma representação computacional de uma entidade do mundo real, de um ser existente, que tenha identidade e características próprias. É também entendido com a instância de uma classe.
Instância
Instanciar é definir como existente um determinado objeto de um determinado tipo (classe), assim, uma instancia é uma realização de uma determinada classe. Em java, uma instancia geralmente é criada com o uso do construtor new.
Polimorfismo
Polimorfismo é uma característica inerente ao conceito de herança. Todas as classe dentro de uma hierarquia tem os mesmos atributos e métodos, porém, eles podem diferir tanto na forma como são implementados em diferentes classes (override) como no tipo de mensagem que cada um deve retornar ou receber(overload).
Overload
Overload ou sobrecarga é uma característica polimórfica que permite que em uma hierarquia de classe existam diversos métodos com nomes iguais porém com variações nos argumentos, tipos de retorno etc.
Override
Override ou sobrescrita é uma característica que permite que em uma hierarquia de classe, um mesmo método possa ser implementado de formas diferentes em todas as classes, tendo porém a mesma assinatura (tipo de retorno, argumentos etc) em todas elas.