Olá pessoal meu nome é João Lucas Fortuna, quando optei em programar em Java tudo que eu via era “Java uma linguagem fácil de programar” e assim como muitos que estão iniciando na programação Java, eu tive alguns problema para entender o que era Orientação a Objetos e alguns outros conceitos.
Então eu decidi esclarecer minhas duvidas, pesquisando em muitos sites sobre os conceitos da linguagem Java e Orientação a Objetos. Com isso cheguei a seguinte conclusão:
-
Programação Orientada a Objetos ou POO:
É uma abstração de objetos do mundo real, facilitando a compreensão do programa a ser criado.
A POO foi criada para tentar aproximar o mundo real do mundo virtual: a ideia fundamental é tentar simular o mundo real dentro do computador. Para isso, nada mais natural do que utilizar Objetos. O programador é responsável por moldar o mundo dos objetos, e explicar para estes objetos como eles devem interagir entre si. Os objetos “conversam” uns com os outros através do envio de mensagens, e o papel principal do programador é especificar quais serão as mensagens que cada objeto pode receber, e também qual a ação que aquele objeto deve realizar ao receber aquela mensagem em específico.
É uma maneira fácil de programar que ajuda na organização compreensão de como um determinado programa funciona. Esta programação e voltada para Interface e não para a Implementação. É sempre bom programar pensando na interface de sua classe, como seus usuários a estarão utilizando, e não somente como deve funcionar.
A programação orientada a objetos é formada por alguns itens, dentre os quais destacamos: Classes, Objetos, Atributos, Métodos, Construtores, Abstração, Encapsulamento, Herança, Polimorfismo etc. Todo programa em Java usa classes e objetos. Na prática, sistemas de software reais são grandes e precisam ser fatorados em partes relativamente independentes para serem viáveis.
Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Cada classe determina o comportamento (definido nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos, além de concentrar as responsabilidades nos pontos certos.
-
Os 4 pilares da Programação Orientada a Objetos:
Quando se programa orientado a objetos alguns itens são essenciais para caracteriza-lo, a partir desses itens é que toda a lógica pode ser aplicada e consequentemente todas as vantagens dessa metodologia podem ser aproveitadas. -
Abstração
-
Encapsulamento
-
Herança
-
Polimorfismo
-
Abstração:
Abstração para a OO, nada mais é do que você observar comportamentos e estruturas do dia a dia, e transformá-los em uma linguagem computacional.
Esse pilar, como o próprio nome diz, visa abstrair algo do mundo real e transforma-lo em um objeto na programação. Esse objeto será composto por uma identidade, propriedades e métodos. Dessa forma fica mais simples trazer para dentro da programação o problema que precisa ser resolvido ou o processo que precisará ser automatizado.
-
Encapsulamento:
O encapsulamento é uma das principais técnicas que define a programação orientada a objetos. Essa pilar visa a proteção de variáveis importantes dentro de uma classe que não podem ser manipuladas diretamente.
Para fazermos um paralelo com o que vemos no mundo real, temos o encapsulamento em outros elementos.
Por exemplo, quando clicamos no botão ligar da televisão, não sabemos o que está acontecendo internamente. Podemos então dizer que os métodos que ligam a televisão estão encapsulados.
-
Herança:
Uma das grandes vantagens da programação orientada a objetos é justamente o reaproveitamento do código fonte, isso só é possível graças a herança. Com ela uma classe pode herdar as propriedades de uma classe mestra como por exemplo, a classe cachorro herda as propriedades da classe mamífero. Essa analogia indica que o cachorro tem características próprias, mas ele é um mamífero e compartilha das mesmas características que um gato, por exemplo, porém cada qual com suas peculiaridades.
-
Polimorfismo:
Outro ponto essencial na programação orientada a objetos é o chamado polimorfismo. Na natureza, vemos animais que são capazes de alterar sua forma conforme a necessidade, e é dessa ideia que vem o polimorfismo na orientação a objetos. Como sabemos, os objetos filhos herdam as características e ações de seus “ancestrais”.
Entretanto, em alguns casos, é necessário que as ações para um mesmo método seja diferente. Em outras palavras, o polimorfismo consiste na alteração do funcionamento interno de um método herdado de um objeto pai.
Esses quatro pilares são essenciais no entendimento de qualquer linguagem orientada a objetos e da orientação a objetos como um todo. Cada linguagem irá implementar esses pilares de uma forma, mas essencialmente é a mesma coisa.
-
Classes:
Uma classe nada mais é do que um projeto que abstrai um conjunto de objetos com características similares. Uma classe define o comportamento de seus objetos através de métodos e os estados possíveis destes objetos através de atributos. Em outros termos, uma classe descreve os serviços providos por seus objetos e quais informações eles podem armazenar.
Note que uma Classe não tem vida, é só um conceito. Mas os Objetos possuem vida.
Classes não são diretamente suportadas em todas as linguagens, e são necessárias para que uma linguagem seja orientada a objetos. Classes são os elementos primordiais de um diagrama de classes.
-
Atributos:
Um atributo é uma variável declarada no corpo de uma classe.
Os Atributos são os elementos que definem a estrutura de uma classe (são as características de um objeto). Atributos são, basicamente, a estrutura de dados que vai representar a classe. A declaração de um atributo especifica o seu nome, seu tipo (que pode ser um dos tipos naturais, tais como int, char, double, float, ou o nome de uma classe, como String ou Pessoa), você pode dar qualquer nome ao atributo, desde que este nome não corresponda a uma palavra reservada da linguagem. Por questões de padronização, o nome de um atributo sempre começa com uma letra minúscula.
-
Métodos:
Métodos são blocos de código que pertencem a uma classe e tem por finalidade realizar uma tarefa. Os métodos determinam o comportamento dos objetos de uma classe, métodos são as ações que um objeto pode realizar. Um método sempre tem que definir o que retorna, nem que defina que não há retorno.
-
Variáveis:
Variáveis são nomes atribuídos à endereços na memória de um computador onde se guardam dados. A declaração de uma variável consiste em dar um nome para a posição de memória a ser usada e especificar qual tipo de dado a guardar na memória. O valor da variável é copiado para o atributo titular do objeto.
-
Obs:
Atributos e Variáveis são a mesma coisa em questão de funcionalidade. Ambos são endereços de memória que tem um espaço ou tamanho definido de acordo com o tipo de dado que será guardado, por exemplo: caractere, número, número decimal, etc.
Em Java, costumamos utilizar o termo atributo, que é nada além do que uma variável que está dentro de uma classe. Como tudo que fazemos em Java está contido dentro de uma classe, então usamos o termo atributo ao invés de variável.
-
Instância:
Assim, em programação orientada a objetos, a palavra “instanciar” significa criar. Quando falamos em “instanciar um objeto”, criamos fisicamente uma representação concreta da classe. Instância é a concretização de uma classe. Quem faz o papel de instanciador em Java é o new. New trata de reservar memória o suficiente para o objeto e criar automaticamente uma referência a ele. Para new conseguir determinar o objeto, precisamos usar o método construtor que será usado como base para instanciar a classe e gerar o objeto.
-
Objeto:
Em ciência da computação, objeto é uma referência a um local da memória que possui um valor. Os objetos são características definidas pelas classes, são instância de uma classe. Em Java, objetos são criados a partir de modelos que os descrevem.
Esses modelos são chamados de classes. É dentro dessas classes que definimos que atributos os objetos conterão e que métodos os objetos fornecerão.
Elementos de software que representam entidades físicas ou abstratas, simples ou complexas, dentro de um sistema. Possuem identidade, responsabilidades específicas, estado e um conjunto de mensagens que estão aptos a responder.
Em programação orientada a objetos, um objeto passa a existir a partir de um “molde” (classe); a classe define o comportamento do objeto, usando atributos (propriedades) e métodos (ações). A palavra objeto refere-se a uma instância de uma classe.
Essas definições foram retirada de vários artigos, portanto não são de minha autoria.
Se você gostou e se lhe foi útil faça um Comentário sobre este post.