Hist rico da Programa o Orientada a Objetos
Os engenheiros civis constroem vários tipos de modelos. Com maior frequência, encontram-se modelos estruturais que ajudam as pessoas a visualizar e a especificar partes do sistema e os relacionamentos existentes entre essas partes. Dependendo de ser mais importante o interesse comercial ou a questão da engenharia, os engenheiros também poderão elaborar modelos dinâmicos – por exemplo, com a finalidade de ajudá-los a estudar o comportamento de determinada estrutura em relação a tremores de terra. Cada tipo de modelo é organizado de modo diferente e cada um tem o seu próprio foco. No caso do software, existem várias maneiras de se definir um modelo. As duas maneiras mais comuns são provenientes da perspectiva de um algoritmo ou da perspectiva orientada a objetos.
A visão tradicional no desenvolvimento de softwares adota a perspectiva de um algoritmo. Nessa visão, o principal bloco de construção do software é o procedimento ou função. Essa perspectiva conduz os desenvolvedores a voltar seu foco de atenção para questões referentes ao controle e à decomposição de algoritmos maiores em outros menores. Não existe nenhuma grande desvantagem nessa solução, com exceção da tendência a permitir sistemas instáveis. À medida que os requisitos se modificam(e isso certamente ocorrerá) e o sistema cresce (o que também ocorrerá), será difícil fazer a manutenção de sistemas construídos a partir do foco em algoritmos.
A programação orientada a objetos aproveitou as melhores idéias da programação estruturada e combinou-as com novos conceitos poderosos que levam a ver na tarefa de programação uma nova luz, permitindo que um problema seja mais facilmente decomposto em subgrupos relacionados. Então, usando-se a linguagem, pode-se traduzir esses subgrupos em objetos. A visão contemporânea no desenvolvimento de software adota uma perspectiva orientada a objetos. Nessa visão, o principal bloco de construção de todos os sistemas de software é o