4 Paradigma Orientado a Objetos
O paradigma orientado a objetos tem suas raízes nas linguagens de programação Simula e Smalltalk nas décadas de 1960 e 1970, respectivamente. Contudo, este paradigma só veio a ser aceito realmente para uso comercial por volta dos anos 1990, quando surgiu a linguagem de programação Java , que ficou popularizada pelo fato de se poder programar para todas as plataformas da mesma maneira, o que até então não era possível.
A orientação a objetos também se apresentou com a esperança de suprir algumas das preocupações da indústria do software: a necessidade de criar software comercial mais rapidamente, mais confiável e a um custo baixo. Os meios para conseguir essa proeza encontram-se nas características apresentadas pelo paradigma (apresentadas nas Seções 4.3, 4.4 e 4.5), o que leva a um grande salto quantitativo e qualitativo na produção do software.
Segundo a empresa de software TIOBE Programming Community, que mede a popularidade das linguagens de programação, 9 das 10 linguagens mais populares do mundo em 2015 possuem suporte a esse paradigma. São exemplos de linguagens orientadas a objetos: Java , C++ , C# , Python , etc.
A idéia central deste paradigma é abstrair objetos do mundo real e representá-los com as mesmas características na programação (atributos, ações, modo de fabricação), sendo o programador o responsável por moldar estes objetos, e explicar para estes objetos como eles devem interagir entre si.
As características dos objetos são definidas por meio de classes , nas quais os comportamentos dos objetos são descritos por métodos (também conhecidos como funções ou subrotinas no paradigma procedimental) e seus estados são descritos por atributos. As classes também descrevem relacionamentos entre objetos (da mesma classe, ou de classes distintas). Ou seja, o software é representado por um conjunto de estruturas de dados que interagem entre si, cada uma delas contendo uma coleção de dados específicos e um conjunto de rotinas para manipular esses dados (ações sobre dados).
Para uma linguagem de programação fazer parte inteiramente do paradigma orientado a objetos, deve implementar seus três mecanismos básicos, ou pilares da orientação a objeto, que são: herança, polimorfismo e encapsulamento . Esses conceitos serão abordados mais adiante neste capítulo. Todos os exemplos deste paradigma serão escritos utilizando a linguagem de programação C# (exceto quando especificado), que dá suporte ao paradigma orientado a objetos .