Orientação a Objetos, o que é?
E ai folks, após muitos anos de conversa, com varias pessoas dentre elas, muitos programadores, desenvolvedores e entendedores da linguagem do R2D2( Robozinho do star wars PUTOOO ). Resolvi criar este blog para exemplificar e auxiliar quem precisar, em sua jornada de crescimento na área tecnológica.
Começarei por um assunto, que muitos conhecem o nome mas nem todos entendem o conceito.
Orientação a Objetos.
Vamos ver a definição formal:
"O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam estes dados. "
Vamos falar uma linguagem mas simples para isto vamos para um ambiente que você conhece bem: A sua casa !
Agora vamos olhar a sua estante , o seu guarda-roupa , o seu armário , a sua cozinha. Em todos estes lugares você classificou coisas no seu domínio e , somente de olhar para eles você já sabe relacionar a classificação que utilizou em cada um deles e como classificou as coisas que estão neste lugares.
Na estante você agrupou e organizou os livros , no guarda roupa suas camisas, calças , meias , ternos , etc. Todos os objetos que você classificou nestes lugares foram organizados baseado em alguma concepção que você possuía sobre eles.
No contexto orientado a objeto a estante , o armário , a cozinha são chamados de classes.
No contexto de software podemos dizer que :
É através de objetos que (praticamente) todo o processamento ocorre em aplicações desenvolvidas com linguagens de programação orientadas a objetos.
- A Classe seria um gabarito (como uma planta de uma casa)
- O objeto é concretização do gabarito (casas feitas a partir da mesma planta)
Quando levamos estes conceitos para as linguagens de programação nada se altera.
Existem alguns conceitos básicos que estão vinculados ao conceito de orientação a objetos. São eles :
Pensemos na classe carro.
Esta classe define os comportamentos e atributos de um carro; E existem atributos que serão comum a todos os carros.
As rodas e o motor são atributos comuns a qualquer carro. Já uma Ferrari possui atributos que somente ela possui : valor por exemplo
A definição formal seria:
Herança é um mecanismo que permite que características comuns a diversas classes sejam agrupadas em uma classe base, ou superclasse. A partir de uma classe base, outras classes podem ser especificadas. Cada classe derivada ou subclasse apresenta as características (estrutura e métodos) da classe base e acrescenta a elas o que for definido de particularidade para ela
Encapsular significa "ocultar informações" ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona e oculta os detalhes internos sobre como ele executa os serviços.
Quando você acelera um carro você esta enviando uma mensagem ao motor do carro usando o acelerador e o carro sabe que tem que acelerar.
Você não precisa saber como é feita a aceleração no motor você apenas pisa fundo no acelerador , a implementação de como é feita a aceleração esta encapsulada do cliente.
Polimorfismo significa muitas formas , na orientação a objetos você pode enviar uma mesma mensagem para diferentes objetos e fazê-los responder da maneira correta. Você pode enviar a mensagem de dar marcha-ré para cada objeto semelhante a um carro e cada um vai se comportar de maneira diferente para atender a sua solicitação.
Uma definição mais formal diria:
"Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse"
Procurei ser o mais didático e simples possível .
Pensar em orientação a objetos realmente não é fácil e também não é a panacéia universal.
Começarei por um assunto, que muitos conhecem o nome mas nem todos entendem o conceito.
Orientação a Objetos.
Vamos ver a definição formal:
"O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam estes dados. "
Vamos falar uma linguagem mas simples para isto vamos para um ambiente que você conhece bem: A sua casa !
Agora vamos olhar a sua estante , o seu guarda-roupa , o seu armário , a sua cozinha. Em todos estes lugares você classificou coisas no seu domínio e , somente de olhar para eles você já sabe relacionar a classificação que utilizou em cada um deles e como classificou as coisas que estão neste lugares.
Na estante você agrupou e organizou os livros , no guarda roupa suas camisas, calças , meias , ternos , etc. Todos os objetos que você classificou nestes lugares foram organizados baseado em alguma concepção que você possuía sobre eles.
No contexto orientado a objeto a estante , o armário , a cozinha são chamados de classes.
No contexto de software podemos dizer que :
É através de objetos que (praticamente) todo o processamento ocorre em aplicações desenvolvidas com linguagens de programação orientadas a objetos.
- Primeiro você classifica e abstrai os elementos no sistema para proporcionar uma certa ordem, e, ao fazer isto você define uma classe ;
- Feita a definição da classe você pode criar objetos desta classe. (instanciar)
- A Classe seria um gabarito (como uma planta de uma casa)
- O objeto é concretização do gabarito (casas feitas a partir da mesma planta)
Quando levamos estes conceitos para as linguagens de programação nada se altera.
Existem alguns conceitos básicos que estão vinculados ao conceito de orientação a objetos. São eles :
- Herança
- Encapsulamento
- Polimorfismo
Pensemos na classe carro.
Esta classe define os comportamentos e atributos de um carro; E existem atributos que serão comum a todos os carros.
As rodas e o motor são atributos comuns a qualquer carro. Já uma Ferrari possui atributos que somente ela possui : valor por exemplo
A definição formal seria:
Herança é um mecanismo que permite que características comuns a diversas classes sejam agrupadas em uma classe base, ou superclasse. A partir de uma classe base, outras classes podem ser especificadas. Cada classe derivada ou subclasse apresenta as características (estrutura e métodos) da classe base e acrescenta a elas o que for definido de particularidade para ela
Encapsular significa "ocultar informações" ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona e oculta os detalhes internos sobre como ele executa os serviços.
Quando você acelera um carro você esta enviando uma mensagem ao motor do carro usando o acelerador e o carro sabe que tem que acelerar.
Você não precisa saber como é feita a aceleração no motor você apenas pisa fundo no acelerador , a implementação de como é feita a aceleração esta encapsulada do cliente.
Polimorfismo significa muitas formas , na orientação a objetos você pode enviar uma mesma mensagem para diferentes objetos e fazê-los responder da maneira correta. Você pode enviar a mensagem de dar marcha-ré para cada objeto semelhante a um carro e cada um vai se comportar de maneira diferente para atender a sua solicitação.
Uma definição mais formal diria:
"Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse"
Procurei ser o mais didático e simples possível .
Pensar em orientação a objetos realmente não é fácil e também não é a panacéia universal.
AGORA TUDO FAZ SENTIDO
Comentários
Postar um comentário