Programacao Orientada a Objeto Abstracao e EncapsulamentoIntroducaoA Orientacao a objetos e basicamente a analise, projeto e programacao de sistemas de software fundamentado na composicao e interacao entre diversas unidades de softwares chamadas de objetos.O termo Programacao Orientada a Objetos foi criado por Alan Kay, autor da linguagem de programacao Smalltalk. O conceito de programacao orientada a objeto ja existe desde a decada de 60. A primeira linguagem a usar a programacao orientada a objeto foi a linguagem Simula 67 criada por Ole Johan Dahl e Kristen Nygaard em 1967. Hoje em dia varias outras linguagens ja incorporam esses conceitos, como: Java, Pascal, C#, C++, alem de sistemas operacionais como Windows e em banco de dados como Oracle 8.A medida que sistemas crescem e a complexidade aumento torna se mais dificil atender a todos os sistemas, a programacao orientacao a objeto veio para resolver esses problemas mais rapidamente e com mais seguranca. A POO veio para ser implantada no desenvolvimento de sistemas de software complexos e de grande porte, tem um papel fundamental. A principal vantagem e a criacao de bibliotecas que tornam efetivos o compartilhamento e a reutilizacao do codigo, trazendo uma reducao no tempo que uma solucao pode ser gerada.Conceitos essenciais:Classe representa um conjunto de objetos com caracteristicas semelhantes e define o comportamento dos objetos, atraves de metodos.Objeto e uma instancia de uma classe. Armazenar estados atraves de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos.Modularidade e o termo para o projeto de um sistema que e composto de varias partes que podem ser trocadas. Desta forma o sistema pode ser dividido em varios subsistemas. Os sistemas podem ser processos ou produtos. Modulo, e cada parte que pode ser trocada.Atributos sao caracteristicas de um objeto. Basicamente a estrutura de dados que vai representar a classe, os atributos possuem valores e o conjunto de valores dos atributos de um determinado objeto e chamado de estado.Metodos definem as habilidades dos objetos, a utilizacao de um metodo deve afetar apenas um objeto em particular. Uma classe pode possui diversos metodos.Mensagem e uma chamada a um objeto para chamar um de seus metodos, ativando um comportamento descrito por sua classe.Heranca e o mecanismo pelo qual uma sub-classe pode estender a super-classe, aproveitando seus comportamentos (metodos) e variaveis possiveis (atributos).Associacao e o mecanismo pelo qual um objeto utiliza os recursos de outro.Encapsulamento consiste na separacao de aspectos internos e externos de um objeto. E utilizado para impedir o acesso direto ao estado de um objeto (seus atributos).Abstracao e a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando caracteristicas menos importantes ou acidentais.Polimorfismo e a capacidade de um metodo poder ser implementado de diferentes formas, ou mesmo de realizar coisas diferentes. A decisao sobre qual o metodo deve ser selecionado e tomada em tempo de execucao. Existem dois tipos de polimorfismo a Sobrescrita e sobrecarga.Vamos tratar com um pouco mais de atencao, os elementos ABSTRACAO e "ENCAPSULAMENTO.ABSTRACAOA abstracao, como foi dito, e uma especie de tecnica que e capaz de aumentar a modularidade