🤔 Para Refletir :
"Mais vale um jogo publicado que um jogo perfeito que não sai do projeto."
- HenriqueGibi

Programação Orientada a Objetos: Introdução

Mayleone Feminino

Conde
Membro
Membro
Console.Write("Hello World!");
Juntou-se
25 de Outubro de 2016
Postagens
267
Bravecoins
3.009
46.png

Imagine conseguir passar para um mundo abstrato (virtual) coisas que existem no mundo real de uma forma extremamente fiel, contendo vários detalhes, características e comportamentos de alguma coisa de nosso mundo, apenas escrevendo linhas de código.
Imagine você escrever uma rotina complexa e poder reutilizá-la em seu código quantas vezes você necessitar.
Imagine criar o modelo de um programa ou um software que não precise mostrar ao usuário a sua complexidade e apenas execute e exiba o que você achar necessário, limitando o acesso do código.
Imagine também você poder dividir um código que inicialmente seria grande e extenso em várias "repartições" menores e poder acoplá-las numa espécie de biblioteca onde você poderá utilizá-la em outras aplicações.
Não fique apenas imaginando: Tudo isso e mais ainda é possível através da programação orientada a objetos (POO).



O que é?
A programação orientada a objetos é um paradigma de programação (um estilo de programar) que consiste em focar o seu código em objetos que possuirão comportamentos e características, deixando seu código mais compacto, organizado e produtivo, te possibilitando também a trazer objetos que existem no mundo real, para o mundo virtual de uma forma bastante detalhada.
A  POO está presente em diversas linguagens de programação, tais como: C#, C++, Java, VB.NET, Ruby, PHP, Eiffel, Python, dentro outras.
Atualmente no mercado de trabalho é preferível o desenvolvimento de programas utilizando os conceitos de POO por conta de suas vantagens já apresentadas acima.
Se você está realmente querendo aprender a programar em C# é muito importante que você entenda como funciona esse paradigma e como utilizá-lo, pois a POO está fortemente presente em C#.

Os pilares da POO:
Como um meio de programação, a POO consiste em critérios que devem ser requeridos a uma determinada linguagem para que ela seja considerada orientada a objetos. Esses critérios são chamados também de "Pilares da orientação a objetos".
Vamos ver cada um desses conceitos em específico em aulas separadas, mas posso resumir nesta postagem o que cada critério implica:

Abstração - Consiste em a linguagem ter a capacidade de abstrair seus 'detalhes'.
Pense por exemplo nos semáforos: Você sabe para o que eles funcionam, que seria sinalizar quando o carro deve andar ou parar através de suas cores distintas, mas você realmente sabe como eles funcionam? Em quais momentos eles devem mudar de cor? O que os faz mudarem de cor? Como são conectados e sincronizados?
Você pode até imaginar como eles funcionam, mas saber realmente COMO acho bem improvável.
O modo como um semáforo funciona está abstraído do mundo exterior, as pessoas não precisam saber como ele funciona para saber usá-lo ou para o que servem.
Quando você está programando em C# você utiliza diversas vezes o comando: "Console.WriteLine()", você sabe onde usá-lo e para o que usá-lo, mas você realmente sabe como ele tem a capacidade de imprimir valores na tela? Você sabe como este comando faz isso? Creio que a resposta seja não, correto? Pois então! Os detalhes da programação do WriteLine estão abstraídos do exterior, o usuário não precisa saber como ele foi feito, apenas precisa saber o que faz e como utilizá-lo.

Polimorfismo - A capacidade do código ser desenvolvido para que possa ser utilizado de diversas maneiras diferentes, porém não deixando sua essência.
Imagine as folhas de papel: Elas podem ser utilizadas para serem escritas, dobradas (para criar esculturas ou diminuir de tamanho), podem servir de decoração, para limpar algo, se abanar, e etc.
Note que a sua finalidade é variável, mas algumas propriedades são similares e que o caracterizam  como papel, tais como ter um tamanho, ou ser capaz de se deixar dobrar, tipo de material, e por aí vai.
Porém, existem propriedades variáveis que vão depender exatamente da finalidade daquele papel, como cor, grossura, tamanho, e etc.
Todos esse papeis possuem finalidades diferentes, mas todos ainda são de fato PAPEIS. E este é o conceito do polimorfismo em programação.

Herança - A herança no mundo da programação ocorre como no mundo real: Um filho por exemplo, pode herdar características da mãe, ou ainda num âmbito mais complexo, o ser humano herda características da classe dos mamíferos, bem como os cachorros, por exemplo.
Veja que o ser humano e os cachorros são totalmente diferentes em diversos aspectos como comportamentos, aparência, raciocínio, estilo de vida e etc. Mas apesar disso, ambos herdam semelhanças, como o modo de reprodução, a capacidade da amamentação, e etc.
Seria ainda mais interessante de pensar que os mamíferos herdam características da classe "Animal", ou seja, andar, respirar, correr, nadar, comer, dentro outros.
Perceba que qualquer animal é capaz de respirar (característica herdada de "Animais") mas dependendo de sua subclasse, o jeito como se respira é diferente, como vemos entre peixes e mamíferos, por exemplo.
Em programação, a herança é útil para que possamos escrever um código-pai (que chamaremos de super classe em outras aulas) que possui "comandos essenciais" de base, para que suas classes-filhas sejam construídas. Dessa forma, muitas vezes não se faz necessário rescrever um código completo, basta realizar uma herança que o código poderá ser reutilizado e ainda implementado de outras formas.
O assunto de herança será algo bem extenso durante nossas aulas sobre POO, então até lá você terá vários exemplos sobre este critério.

Encapsulamento - Se você analisar a palavra, "encapsular" verá que é o ato de proteger/esconder alguma coisa.
Referente à POO, encapsular um código é limitá-lo a quem ou o que pode acessá-lo, e este conceito está muito ligado com o conceito de abstração, visto mais acima.
Através dos modificadores de acesso e métodos especiais de acessibilidade, é possível encapsular determinadas informações dentro de seu programa.
Quando formos falar de tratamento de erros e segurança do código, você vai poder entender melhor a finalidade deste conceito.

E então...
Esta postagem foi criada com a finalidade de explicar rapidamente os conceitos básicos da POO, e o que de fato isso vem a ser. Este assunto é algo extenso e será tratado com detalhes ao longo de nossas aulas, tendo como foco cada um dos conceitos apresentados acima, contendo exemplos práticos de suas aplicações e relevância.​
 
Excelente tópico eu conheci um pouco de programação orientada a objetos (POO) com a linguagem Java. No Curso em Vídeo do professor Gustavo Guanabara. Mas devido as atribuições referente ao trabalho e faculdade não pude dedicar com afinco. Todavia, gostei muito da iniciativa professora!

[youtube]https://www.youtube.com/watch?v=KlIL63MeyMY&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-aGsY&index=1[/youtube]
 
[member=895]Mayleone[/member]

Muito bom, adorei a postagem, fico muito feliz em ver que essa área ainda está viva por aqui, espero que postagens como a sua aumentem cada vez mais.
 
[member=164]CHICO BENTO[/member]:
Agradeço o comentário!
Realmente as aulas do professor Guanabara são excelentes, eu por exemplo estou acompanhando as aulas de MySql e posso dizer que estou gostando muito!

[member=770]Resque[/member] :
Fico feliz que tenha gostado da postagem! Prometo trazer mais assim que possível.

Até mais.
 
Voltar
Topo Inferior