Índice
- Disciplinas Atuais
- Disciplinas Antigas
Por João Araujo.
A programação Orientada a objetos (POO) é uma forma especial de programar, mais próximo de como expressaríamos as coisas na vida real do que outros tipos de programação.
Com a POO temos que aprender a pensar as coisas de uma maneira distinta, para escrever nossos programas em termos de objetos, propriedades, métodos e outras coisas que veremos rapidamente para esclarecer conceitos e dar uma pequena base que permita soltarmos um pouco com este tipo de programação.
Durante anos, os programadores se dedicaram a construir aplicações muito parecidas que resolviam uma vez ou outra, os mesmo problemas.
Pensar em termos de objetos é muito parecido a como faríamos na vida real. Por exemplo, vamos pensar em um carro para dar um modelo em um esquema de POO.
Diríamos que o carro é o elemento principal que tem uma série de características, como poderiam ser…
Ademais tem uma série de funcionalidades associadas, como podem ser …
Então em um esquema POO o carro seria o objeto, as propriedades seriam as características como a cor ou o modelo e os métodos seriam as funcionalidades associadas como andar ou parar.
Para dar outro exemplo, vamos ver como faríamos um modelo em um esquema POO de uma fração, ou seja, essa estrutura matemática que tem um numerador e um denominador que divide ao numerador, por exemplo,
3/2
A fração será o objeto e terá duas propriedades, o numerador e o denominador. Logo, poderia ter vários métodos como simplificar, somar com outra fração ou número, subtrair com outra fração, etc.
Estes objetos poderão ser utilizados nos programas, por exemplo, em um programa de matemáticas seria feito o uso de objetos fração e em um programa que providencie uma oficina de carros, seria utilizado o uso de objeto carro.
Os programas Orientados a objetos utilizam muitos objetos para realizar as ações que se desejam realizar e eles mesmos também são objetos. Ou seja, a oficina de carros será um objeto que utilizará objetos carro, ferramenta, mecânico, trocas, etc.
As classes são declarações de objetos, também se poderiam definir como abstrações de objetos.
Isto quer dizer que a definição de um objeto é a classe. Quando programamos um objeto e definimos suas características e funcionalidades na verdade o que estamos fazendo é programar uma classe. Nos exemplos anteriores, na verdade falávamos das classes carro ou fração porque somente estivemos definindo, embora por alto, suas formas.
As propriedades ou atributos são as características dos objetos. Quando definimos uma propriedade normalmente especificamos seu nome e seu tipo. Podemos ter a idéia de que as propriedades são algo assim como as variáveis onde armazenamos os dados relacionados com os objetos.
São as funcionalidades associadas aos objetos. Quando estamos programando as classes as chamamos de métodos. Os métodos são como funções que estão associadas a um objeto.
Os objetos são exemplares de uma classe qualquer. Quando criamos um exemplar temos que especificar a classe a partir da qual se criará. Esta ação de criar um objeto a partir de uma classe se chama instance (que significa em inglês exemplificar).
Por exemplo, um objeto da classe fração é por exemplo, 3/5. O conceito ou definição de fração seria a classe, mas quando já estávamos falando de uma fração em concreto 4/7, 8/1000 ou qualquer outra a chamamos de objeto.
Para criar um objeto temos que escrever uma instrução especial que possa ser distinta dependendo da linguagem de programação que se empregue, mas será algo parecido a isto.
meuCarro = new Carro()
Com a palavra new especificamos que se tem que criar uma instance da classe que continua a seguir. Dentro dos parênteses poderíamos colocar parâmetros com os quais se inicia o objeto da classe carro.
Quando temos um objeto suas propriedades tomam valores. Por exemplo, quando temos um carro a propriedade cor tomará um valor em concreto, como por exemplo, vermelho, cinza. O valor concreto de uma propriedade de um objeto se chama estado.
Para acessar a um estado de um objeto para ver seu valor ou mudá-lo se utiliza o operador ponto.
meuCarro.cor = vermelho
O objeto é meuCarro, logo colocamos o operador ponto e por último o nome da propriedade a qual desejamos acessar. Neste exemplo, estamos mudando o valor do estado da propriedade do objeto a vermelho com uma simples atribuição.
Uma mensagem em um objeto é a ação de efetuar uma chamada a um método. Por exemplo, quando dizemos a um objeto carro para andar, estamos lhe passando a mensagem “ande”.
Para mandar mensagens aos objetos utilizamos o operador ponto, seguido do método que desejamos utilizar.
meuCarro.andar()
Neste exemplo, passamos a mensagem andar(). Deve-se colocar parênteses assim como com qualquer chamada a uma função, dentro iriam os parâmetros.
é o processo de ocultar todos os detalhes de um objeto que não contribuem para as suas características essenciais
O encapsulamento impede os clientes de terem uma visão interna dos objetos. Trata-se de uma barreira efetiva entre diferentes abstrações.
Os atributos de um objeto são acessíveis apenas por meio dos métodos da classe.
A herança serve para criar objetos que incorporem propriedades e métodos de outros objetos. Assim, poderemos construir uns objetos a partir de outros sem ter que reescrevê-lo todo.
Herança define uma relação entre classes, em que uma classe compartilha a estrutura e o comportamento definido em uma ou mais classes (herança simples e herança múltipla, respectivamente).
O polimorfismo serve para que não tenhamos que nos preocupar sobre o que estamos trabalhando, e abstrairmos para definir um código que seja compatível com objetos de vários tipos.
É um mecanismo que permite que diferentes operações (métodos, serviços ou funções) sobre objetos de diferentes tipos tenham o mesmo nome
Isto significa que um objeto pode enviar uma mensagem para outro objeto sem necessariamente saber (ou preocupar-se) a que classe o outro objeto pertence.
Simula(1967) é a primeira linguagem de programação orientada a objetos.
Smalltalk (1972 to 1980) é a linguagem que foi mais longe no suporte ao paradgma da POO.