IntroducaoAntes de darmos inicio aos topicos avancados, demonstrarei aqui os principios basicos da orientacao a objeto, de forma clara, simples e direta, questoes como classe, objeto, heranca e polimorfismo.Aprimoramento progressivoMuito se fala hoje sobre orientacao a objeto mas, diga-se de passagem, ela e bem velha e apesar disso e altamente utilizada. Isso nos leva a uma necessidade de aprender e dominar de fato a utilizacao da programacao orientada a objetos ou popularmente conhecida como POO mas, nao podemos simplesmente atropelar as outras formas de desenvolvimento e para ser sincero o nao aprendizado das outras duas formas de programacao torna muito mais dificil o entendimento do paradigma de orientacao a objetos.No esquema temos a seguinte evolucao: Programacao Linear -> Programacao Orientada a Eventos -> Programacao Orientada a ObjetosConceitos de OOClassesA primeira nocao que precisamos ter, e que existe muita diferenca de POO em relacao a programacao estruturada, porem, muito se assemelha em certos quesitos principalmente quando estamos falando de Delphi que pode trabalhar com procedures e functions e nao necessariamente com metodos statics que em Delphi sao conhecidos como class procedure e class function.O conceito basico de OO, e a ideia de trabalhar com entidades denominadas classes, essas sao representacoes de entidades reais em nosso mundo e/ou entidades necessarias para o funcionamento do sistema, tudo aquilo que reune um conjunto de caracteristicas de forma a constituir um tipo,ou seja, e passivel de classificacao e um excelente candidato a ser uma classe.Ex. de classes: Cliente, Telefone, Usuario, Endereco, Divida, ParcelaBom, isso parece simples certo?Em teoria sim, mas nao tanto, classificar entidades comumente usadas ou entidades do mundo real e uma tarefa relativamente simples porque possuimos uma capacidade natural de agrupar caracteristicas, inclusive a titulo de curiosidade, isso e um meio que nosso cerebro encontra para classificar objetos e animais, tornando assim racional, plausivel e evidente a diferenca entre uma maca e um cachorro. Mas quando falamos de entidades ficticias que somente existem no dominio do sistema essa tarefa torna-se um pouco mais complexa, pois e dificil enxergar de forma clara um denominador comum que torne racional a classificacao de tal entidade, diferenciar uma maca de um cachorro e simples, mas e diferenciar entidades que nao possuem caracteristicas fisicas e/ou reais, como por ex. um log de sistema de uma insercao em tabela ou um relatorio qualquer.A chave para determinar e formar classes e procurar caracteristicas em comum e caracteristicas que podem ser adquiridas de classes superiores (Falaremos sobre heranca mais tarde), suponhamos que voce deva classificar a si mesmo, inicialmente e possivel extrair dezenas de caracteristicas que agrupadas em uma classificacao tornam voce um individuo pertencente a uma classe, mas se analisarmos de forma criteriosa e possivel determinar caracteristicas que nao sao exclusivamente suas, sendo uma pessoa eu posso afirmar que voce e dotado de polegar opositor, sendo um humano posso determinar que voce possui uma quantidade de peso, altura, sexo, cor e raca. Podemos continuar cada vez mais a abstrair as caracteristicas da classificacao e cada vez mais iremos perceber que na realidade voce e uma especializacao de uma classe maior, sendo assim