Olá novamente, hoje eu irei falar de um assunto muito interessante que é sobre Programação Orientada a Objetos, um paradigma que é largamente utilizado nos dias atuais para o desenvolvimento de sistemas, aplicativos e etc.
Bom, lá na década de 60, o paradigma bastante utilizado para desenvolvimento ainda era o estruturado, que a programação segue uma estrutura lógica e sequencial, utilizando as principais linguagens: Pascal e Cobol. Porém o tempo foi passando e os desenvolvedores da época, sentiram de resolver as principais desvantagens do Estruturado como: O tempo de entendimento do fluxo do código para novos desenvolvedores que forem dar manutenção, mudanças bruscas que acarretavam a alteração em todos os arquivos e funções relacionados.
Para Oliveira (2011, p. 68):
[...] a orientação a objetos surgiu com a necessidade de se criar um
paradigma de programação simples, baseado na percepção humana dos objetos ao seu redor. Este novo paradigma não é apenas um modo de programar, mas uma maneira de pensar e conceber as ideias.
[...] a utilização do paradigma orientado a objetos está presente em todas as etapas do processo de desenvolvimento [de sistemas], indo
da análise, passando pelo projeto, até as fases de teste e implementação. É um fator decisivo para a construção de sistemas, visando alcançar os objetivos esperados no determinado espaço de tempo com determinado custo (OLIVEIRA, 2011, p. 70).
E então a orientação a objeto foi criada para tentar compreender, interpretar as características do mundo real para o mundo virtual (classes, objetos, atributos e métodos). (Mais abaixo, explico sobre esses nomes).
"O termo Programação Orientada a Objetos (POO) foi criado por Alan Kay, autor da linguagem de programação Smalltalk. Mas mesmo antes da criação do Smalltalk, algumas das idéias da POO já eram aplicadas, sendo que a primeira linguagem a realmente utilizar estas idéias foi a linguagem Simula 67, criada por Ole-Johan Dahl e Kristen Nygaard em 1967. Entretanto só veio a ser aceito realmente nas grandes empresas de desenvolvimento de Software por volta dos anos 90."
"Alguns exemplos de linguagens orientadas a objetos modernas utilizadas por grandes empresas em todo o mundo são: Java, C#, C++, Object Pascal (Delphi), Ruby, Python, Lisp, etc".
(Wikipédia).
Definições:
Classes:
As Classes são representações de "coisas" do mundo real, para o mundo virtual, composto por atributos e métodos.
Atributos são as características, dados do que foi representado do mundo real. (Nome, idade, sexo e etc).
Método é como uma atividade, função será executado.
Objetos: É uma ocorrência de uma classe(representação, modelo), que possuem dados (atributos).
Para que a linguagem seja considerada, e entendida como Orientada a objetos é necessário que ela siga os 4 pilares que são: Abstração, Encapsulamento, Herança e Polimorfismo.
Abstração:
A definição apresentada por Rumbaugh et al. (1994, p. 9) no livro Modelagem e projetos baseados em objetos diz que:
"A abstração consiste na concentração dos aspectos essenciais, próprios, de uma entidade e em ignorar suas propriedades acidentais. No desenvolvimento de sistemas, isso significa concentrar-se no que um objeto é e faz, antes de decidir como ele deve ser implementado. O uso da abstração preserva a liberdade de se tomar decisões evitando, tanto quanto possível,
comprometimentos prematuros com detalhes."
Abstração é a técnica de se concentrar no que o objeto irá realizar no sistema, qual será a sua função, ignorando a princípio, os detalhes desse objeto.
Encapsulamento:
O encapsulamento é uma técnica que dão mais segurança ao sistema, pelo o fato de não permitir, que os detalhes da implementação sejam abertos, visíveis para qualquer desenvolvedor que for utilizar a classe. Um exemplo muito citado é o funcionamento do carro. O motorista não é obrigado a saber, o que de fato acontece quando ele gira o volante a esquerda ou a direita, a única certeza é que ao girar o volante, o carro também virará.
Herança:
Conforme definição de Rumbaugh et al. (1994, p. 4),
"Herança é
[...] o compartilhamento de atributos e operações entre classes, com base em um relacionamento hierárquico. "
"Uma classe pode ser
definida de forma abrangente e depois refinada em sucessivas subclasses mais definidas. [...]
"
Herança é um tipo de relacionamento entre classes. Após a análise do que será desenvolvido, e da abstração do conhecimento sobre a regra de negócio, esse relacionamento propõe hierarquias entre as classes, gerando um reuso de código (ou seja, o mesmo código não precisa ser digitado várias vezes em classes diferentes).
Polimorfismo:
É o principio pelo o qual o objeto/classe se comporta ao invocar um método. Dependendo do tipo do objeto, um método mais original, mais "correto" é invocado.
O polimorfismo é a capacidade de que uma superclasse, possua classes filhas com a mesma assinatura de método, mas com implementação diferentes. Um exemplo é da Concessionária de carros, que pretende aumentar o valor dos carros de acordo com cada tipo.
Diagrama de Classes - Concessionária
Neste exemplo, ao invocar o método: carroFerrari.aumentarValor() será diferente de carroFusca.aumentarValor(), pois a linguagem irá analisar de qual tipo é cada objeto e invocar o seu respectivo método.
Esse foi mais um artigo explicando um pouco sobre a história da Orientação a Objetos e alguns conceitos sobre ela. Espero que tenham gostado. Caso tenham alguma dúvida pode comentar abaixo que eu respondo, quando puder.
Até mais ;)
Bibliografias:
RUMBAUGH, James et al. Modelagem e projetos baseados em objetos. Rio de
Janeiro: Campus, 1994
https://pt.wikibooks.org/wiki/Programa%C3%A7%C3%A3o_Orientada_a_Objetos/Introdu%C3%A7%C3%A3o
OLIVEIRA, Artur Elias Hayne. Introdução à orientação a objetos. Revista SQL
Magazine, Rio de Janeiro, n. 89, p. 68-74, 2011.
Nenhum comentário:
Postar um comentário