implementacao do objeto, os quais permanecem escondidos dos outros objetos. O uso de encapsulacao evita que um programa torne-se tao interdependente que uma pequena mudanca tenha grandes efeitos colaterais.O uso de encapsulacao permite que a implementacao de um objeto possa ser modificada sem afetar as aplicacoes que usam este objeto. Motivos para modificar a implementacao de um objeto podem ser por exemplo melhoria de desempenho, correcao de erros e mudanca de plataforma de execucao.Assim como abstracao, o conceito de encapsulacao nao e exclusivo da abordagem de orientacao a objetos. Entretanto, a habilidade de se combinar estrutura de dados e comportamento em uma unica entidade torna a encapsulacao mais elegante e mais poderosa do que em linguagens convencionais que separam estruturas de dados e comportamento. CompartilhamentoTecnicas de orientacao a objetos promovem compartilhamento em diversos niveis distintos. Heranca de estrutura de dados e comportamento permite que estruturas comuns sejam compartilhadas entre diversas classes derivadas similares sem redundancia. O compartilhamento de codigo usando heranca e uma das grandes vantagens da orientacao a objetos. Ainda mais importante que a economia de codigo e a clareza conceitual de reconhecer que operacoes diferentes sao na verdade a mesma coisa, o que reduz o numero de casos distintos que devem ser entendidos e analisados.O desenvolvimento orientado a objetos nao apenas permite que a informacao dentro de um projeto seja compartilhada como tambem oferece a possibilidade de reaproveitar projetos e codigo em projetos futuros. As ferramentas para alcancar este compartilhamento, tais como abstracao, encapsulacao e heranca, estao presentes na metodologia; uma estrategia de reuso entre projetos e a definicao de bibliotecas de elementos reusaveis. Entretanto, orientacao a objetos nao e uma formula magica para alcancar reusabilidade; para tanto, e preciso planejamento e disciplina para pensar em termos genericos, nao voltados simplesmente para a aplicacao corrente. O Modelo de ObjetosUm modelo de objetos busca capturar a estrutura estatica de um sistema mostrando os objetos existentes, seus relacionamentos, e atributos e operacoes que caracterizam cada classe de objetos. E atraves do uso deste modelo que se enfatiza o desenvolvimento em termos de objetos ao inves de mecanismos tradicionais de desenvolvimento baseado em funcionalidades, permitindo uma representacao mais proxima do mundo real.Uma vez que as principais definicoes e conceitos da abordagem de orientacao a objetos estao definidos, e possivel introduzir o modelo de objetos que sera adotado ao longo deste texto. O modelo apresentado e um subconjunto do modelo OMT (Object Modeling Technique), proposto por Rumbaugh e outros1.1. OMT tambem introduz uma representacao diagramatica para este modelo, a qual sera tambem apresentada aqui.Objetos e ClassesObjeto e definido neste modelo como um conceito, abstracao ou coisa com limites e significados bem definidos para a aplicacao em questao. Objetos tem dois propositos: promover o entendimento do mundo real e suportar uma base pratica para uma implementacao computacional. Nao existe uma maneira ``correta'' de decompor um problema em objetos; esta decomposicao depende do julgamento do projetista e da natureza do problema. Todos objetos tem identidade propria e sao distinguiveis.Uma classe de objetos descreve um grupo de objetos com propriedades (atributos) similares, comportamento (operacoes) similares, relacionamentos comuns