com outros objetos e uma semantica comum. Por exemplo, Pessoa e Companhia sao classes de objetos. Cada pessoa tem um nome e uma idade; estes seriam os atributos comuns da classe. Companhias tambem podem ter os mesmos atributos nome e idade definidos. Entretanto, devido a distincao semantica elas provavelmente estariam agrupados em outra classe que nao Pessoa. Como se pode observar, o agrupamento em classes nao leva em conta apenas o compartilhamento de propriedades.Todo objeto sabe a que classe ele pertence, ou seja, a classe de um objeto e um atributo implicito do objeto. Este conceito e suportado na maior parte das linguagens de programacao orientada a objetos, tais como C ++.OMT define dois tipos de diagramas de objetos, diagramas de classes e diagramas de instancias. Um diagrama de classe e um esquema, ou seja, um padrao ou gabarito que descreve as muitas possiveis instancias de dados. Um diagrama de instancias descreve como um conjunto particular de objetos esta relacionado. Diagramas de instancias sao uteis para apresentar exemplos e documentar casos de testes; diagramas de classes tem uso mais amplo. Conforme figura abaixoProgramacao Orientada a ObjetosFigura: Representacao diagramatica de OMT para classes e objetos. Um diagrama de classe e apresentado a esquerda. Um possivel diagrama de instancias e apresentado a direita.O agrupamento de objetos em classes e um poderoso mecanismo de abstracao. Desta forma, e possivel generalizar definicoes comuns para uma classe de objetos, ao inves de repeti-las para cada objeto em particular. Esta e uma das formas de reutilizacao e economia que a abordagem de orientacao a objetos suporta.Operacoes e MetodosUma operacao e uma funcao ou transformacao que pode ser aplicada a ou por objetos em uma classe. Por exemplo, abrir, salvar e imprimir sao operacoes que podem ser aplicadas a objetos da classe Arquivo. Todos objetos em uma classe compartilham as mesmas operacoes.Toda operacao tem um objeto-alvo como um argumento implicito. O comportamento de uma operacao depende da classe de seu alvo. Como um objeto ``sabe'' qual sua classe, e possivel escolher a implementacao correta da operacao. Alem disto, outros argumentos (parametros) podem ser necessarios para uma operacao.Uma mesma operacao pode se aplicar a diversas classes diferentes. Uma operacao como esta e dita ser polimorfica, ou seja, ela pode assumir distintas formas em classes diferentes.Um metodo e a implementacao de uma operacao para uma classe. Por exemplo, a operacao imprimir pode ser implementada de forma distinta, dependendo se o arquivo a ser impresso contem apenas texto ASCII, e um arquivo de um processador de texto ou binario. Todos estes metodos executam a mesma operacao -- imprimir o arquivo; porem, cada metodo sera implementado por um diferente codigo.A assinatura de um metodo e dada pelo numero e tipos de argumentos do metodo, assim como por seu valor de retorno. Uma estrategia de desenvolvimento recomendavel e manter assinaturas coerentes para metodos implementando uma dada operacao, assim como um comportamento consistente entre as implementacoes.Em termos de diagramas OMT, operacoes sao listadas na terceira parte da caixa de uma classe. Cada nome de operacao pode ser seguida por detalhes opcionais, tais como lista de