A Programação Orientada a Objetos, ou OOP (Objetct-Oriented Programming) pode ser considerada uma extensão quase natural da Programação Modular. A OOP foi concebida no início da década de 70, a primeira linguagem de programação a implementar sistematicamente os conceitos de OOP foi a linguagem SIMULA-68, em seguida surgiu a linguagem Smaltalk - criada por Xerox, que pode ser considerada a linguagem que popularizou e incentivou o emprego da OOP.
Se consideramos a Orientação ao Objeto como um novo paradigma de desenho de software, devemos considerar, também, uma nova maneira de pensar, porque apesar de a escrita do código continuar sendo procedural, alguns conceitos mudam radicalmente: a estruturação e o modelo computacional.
Fundamentalmente o que se deseja com esta metodologia são basicamente duas características: reutilização de código e modularidade de escrita; e nisto a OOP é imbatível quando comparada com as metodologias antigas. Em termos de modelo computacional podemos dizer que enquanto as metodologias tradicionais utilizam o conceito de um processador, uma memória e dispositivos de I/O para processar, armazenar e exibir as informações, a OOP emprega um conceito mais real, mais concreto, que é o de Objeto.
Uma definição para objeto seria a de um "ente" ativo dotado de certas características que o tornam "inteligente", a ponto de tomar certas decisões quando devidamente solicitado. Outra definição mais formal para objeto poderia ser: uma unidade dinâmica, composta por um estado interno privativo (estrutura de dados) e um comportamento (conjunto de operações).
Mas para ser considerada um linguagem Orientada a Objetos a linguagem tem que atender a quatro conceitos, que são: Abstração, Encapsulamento, Herança, Polimorfismo.
Vamos ver um pouco sobre cada um desses conceitos:
Abstração: é considerada como a habilidade de modelar características do mundo real do problema que o programador esteja tentando resolver. Nesta etapa "imaginamos" o nosso objetivo, aqui definimos a identidade, as propriedades e seus métodos (eventos).
A Identidade é o nome do objeto a ser criado.
As Propriedade são as características do objeto.
Os Métodos são os eventos, as ações que esse objeto irá executar.
É a representação de algo real, na abstração analisamos o que é relevante conter em um objeto.
Encapsulamento: é a técnica de proteger as propriedades e métodos de um objeto, estas informações são acessadas apenas internamente pelo objeto. Exemplo: quando ligamos a televisão não sabemos o que ocorre por trás do botão "ligar", podemos dizer que os métodos que ligam efetivamente a televisão estão encapsulados.
Em C# e VB.NET por exemplo, encapsulamos uma propriedade ou método através do modificador de acesso Private, exemplo de uma propriedade encapsulada: private string_nome;
Herança: é um mecanismo que, se for bem empregado, permite altos graus de reutilização de código. Do ponto de vista prático, pode ser entendido como sendo um conjunto de instâncias criadas a partir de um outro conjunto de instâncias com características semelhantes, e os elementos desse subconjunto herdam todas as características do conjunto original. A reutilização de códigos nas linguagens orientada a objetos é uma característica que otimiza o desenvolvimento de um aplicativo tanto em economia de tempo, quanto em número de linhas de código.
Por exemplo, podemos criar uma classe com todas as características dos animais mamíferos. E uma outra classe para felinos que herda as características dos mamíferos, já que todo felino é um mamífero. Se precisarmos cria uma classe para os caninos, esta também herda as características dos mamíferos, já que todo canino é um mamífero. Assim os códigos comuns às classes Canino e Felinos só seram escritas uma vez, economizando códigos e tempo de desenvolvimento.
Polimorfismo: é um código que pode ser aplicado à várias classes de objetos. Reutilizar os códigos sem dúvida é importante, mas em alguns casos precisamos que algum método já criado execute uma função um pouco diferente em determina objeto.
Exemplo: Temos uma classe "MOTOR" que tem o método "Ligar", agora criamos mais duas classes "MotorELÉTRICO" e "MotorEXPLOSÃO", que herdam da classe MOTOR. As duas classes possuem o evento "Ligar", mas para cada motor o processo para iniciar o funcionamento é diferente, já que um funciona com gasolina e outro com eletricidade, então o método "Ligar" é polimórfico, nas duas classes seu objetivo é ligar, mas seu funcionamento interno é diferente.
Quando criamos estas duas classes filhas (MotorELÉTRICO e MotorEXPLOSÃO) adaptamos o método "Ligar" herdado da classe pai (MOTOR).
A conclusão de tudo é que o paradigma de Programação Orientada a Objetos possibilita a criação de sistemas que parecem teias de aranhas, onde cada nó dessa teia é uma classe, mas cada classe pode ser aproveitada para a composição de outros nós da teia, bem como a reutilização desses nós em outros sistemas, diminuindo drasticamente o tempo de codificação e depuração de códigos.
Se consideramos a Orientação ao Objeto como um novo paradigma de desenho de software, devemos considerar, também, uma nova maneira de pensar, porque apesar de a escrita do código continuar sendo procedural, alguns conceitos mudam radicalmente: a estruturação e o modelo computacional.
Fundamentalmente o que se deseja com esta metodologia são basicamente duas características: reutilização de código e modularidade de escrita; e nisto a OOP é imbatível quando comparada com as metodologias antigas. Em termos de modelo computacional podemos dizer que enquanto as metodologias tradicionais utilizam o conceito de um processador, uma memória e dispositivos de I/O para processar, armazenar e exibir as informações, a OOP emprega um conceito mais real, mais concreto, que é o de Objeto.
Uma definição para objeto seria a de um "ente" ativo dotado de certas características que o tornam "inteligente", a ponto de tomar certas decisões quando devidamente solicitado. Outra definição mais formal para objeto poderia ser: uma unidade dinâmica, composta por um estado interno privativo (estrutura de dados) e um comportamento (conjunto de operações).
Mas para ser considerada um linguagem Orientada a Objetos a linguagem tem que atender a quatro conceitos, que são: Abstração, Encapsulamento, Herança, Polimorfismo.
Vamos ver um pouco sobre cada um desses conceitos:
Abstração: é considerada como a habilidade de modelar características do mundo real do problema que o programador esteja tentando resolver. Nesta etapa "imaginamos" o nosso objetivo, aqui definimos a identidade, as propriedades e seus métodos (eventos).
A Identidade é o nome do objeto a ser criado.
As Propriedade são as características do objeto.
Os Métodos são os eventos, as ações que esse objeto irá executar.
É a representação de algo real, na abstração analisamos o que é relevante conter em um objeto.
Encapsulamento: é a técnica de proteger as propriedades e métodos de um objeto, estas informações são acessadas apenas internamente pelo objeto. Exemplo: quando ligamos a televisão não sabemos o que ocorre por trás do botão "ligar", podemos dizer que os métodos que ligam efetivamente a televisão estão encapsulados.
Em C# e VB.NET por exemplo, encapsulamos uma propriedade ou método através do modificador de acesso Private, exemplo de uma propriedade encapsulada: private string_nome;
Herança: é um mecanismo que, se for bem empregado, permite altos graus de reutilização de código. Do ponto de vista prático, pode ser entendido como sendo um conjunto de instâncias criadas a partir de um outro conjunto de instâncias com características semelhantes, e os elementos desse subconjunto herdam todas as características do conjunto original. A reutilização de códigos nas linguagens orientada a objetos é uma característica que otimiza o desenvolvimento de um aplicativo tanto em economia de tempo, quanto em número de linhas de código.
Por exemplo, podemos criar uma classe com todas as características dos animais mamíferos. E uma outra classe para felinos que herda as características dos mamíferos, já que todo felino é um mamífero. Se precisarmos cria uma classe para os caninos, esta também herda as características dos mamíferos, já que todo canino é um mamífero. Assim os códigos comuns às classes Canino e Felinos só seram escritas uma vez, economizando códigos e tempo de desenvolvimento.
Polimorfismo: é um código que pode ser aplicado à várias classes de objetos. Reutilizar os códigos sem dúvida é importante, mas em alguns casos precisamos que algum método já criado execute uma função um pouco diferente em determina objeto.
Exemplo: Temos uma classe "MOTOR" que tem o método "Ligar", agora criamos mais duas classes "MotorELÉTRICO" e "MotorEXPLOSÃO", que herdam da classe MOTOR. As duas classes possuem o evento "Ligar", mas para cada motor o processo para iniciar o funcionamento é diferente, já que um funciona com gasolina e outro com eletricidade, então o método "Ligar" é polimórfico, nas duas classes seu objetivo é ligar, mas seu funcionamento interno é diferente.
Quando criamos estas duas classes filhas (MotorELÉTRICO e MotorEXPLOSÃO) adaptamos o método "Ligar" herdado da classe pai (MOTOR).
A conclusão de tudo é que o paradigma de Programação Orientada a Objetos possibilita a criação de sistemas que parecem teias de aranhas, onde cada nó dessa teia é uma classe, mas cada classe pode ser aproveitada para a composição de outros nós da teia, bem como a reutilização desses nós em outros sistemas, diminuindo drasticamente o tempo de codificação e depuração de códigos.
Nenhum comentário:
Postar um comentário