Uma classe é definida nos seus aspectos estruturais através de seus atributos e nos seus aspectos comportamentais através de suas operações.
Atributo da classe: São propriedades semelhantes que os objetos de uma classe possuem. O
"João da Silva" além do nome, também é caracterizado por outros atributos,
endereço, número do contribuinte, CPF, etc.
Cada atributo permite definir um intervalo de valores que as instâncias dessa propriedade
podem apresentar. Meu carro é branco, o seu é preto. Essas propriedades de carro são descritas pelo atributo cor.
Operações da Classe: O João da Silva possui uma identidade própria, isto é, para a empresa, ele é distinto de todos os outros clientes. Essa identidade não é só descrita pelos atributos. Todos os objetos de uma classe podem fazer alguma coisa (um serviço) ou pode-se fazer com êle alguma coisa. As operações são responsáveis pela efetivação dos serviços prestados pelas classes. Sobre o cliente João da Silva podem-se efetuar várias operações, nomeadamente emitir-lhe faturas, efetuar alterações de endereço, apagá-lo da base de dados do sistema.
O "João da Silva" relaciona-se com a empresa através, por exemplo, dos produtos ou serviços que adquire.
Provavelmente existirão outros clientes na empresa, e todos eles são
caracterizados pelo mesmo conjunto de atributos, pelas mesmas operações
e relações e todos são distintos um dos outros. Esses diversos clientes
podem ser agrupados em uma classe, a classe dos clientes da empresa.
Note-se que os objetos não têm necessariamente que corresponder a entidades
humanas ou, mais genericamente, a entidades com representação física
(por exemplo, uma fatura). Pode-se representar entidades mais abstratas (por exemplo, venda).
Tanto nos atributos quanto nas operações de uma classe podem ser especificados detalhes de sua
visibilidade e de sua multiplicidade.
A sintaxe de um atributo é a seguinte:
[visibilidade] nome-do-atributo [multiplicidade] [:tipo] [:valor-inicial] [{string-de-propriedade}]
Na classe mostrada abaixo, Figura, o atributo "#origem_atual : Ponto = (0,0)" tem o nome "origem_atual", é do tipo Ponto e tem o valor inicial (0,0).

Já uma operação tem a seguinte sintaxe:
[visibilidade] nome-da-operação [(lista-de-parâmetros)][:tipo-de-retorno][{string-de-propriedade}]
A operação da classe Figura, "+obterIdentificacao() : Inteiro" tem o nome obterIdentificacao, é sem parâmetros e retorna
um inteiro.
Em ambos os casos a UML tem um conjunto padrão de propriedades.