Classe de objeto e categoria de objeto

Cada instância de uma classe de objeto tem uma propriedade objectClass de vários valores que identifica a classe da qual o objeto é uma instância, bem como todas as superclasses estruturais ou abstratas das quais essa classe é derivada. Assim, a propriedade objectClass de um objeto de usuário identificaria as classes top, person, organizationalPerson e user. A propriedade objectClass não inclui classes auxiliares na lista. O sistema define o valor objectClass quando a instância do objeto é criada e não pode ser alterada.

Cada instância de uma classe de objeto também tem uma propriedade objectCategory, que é uma propriedade de valor único que contém o nome distinto da classe da qual o objeto é uma instância ou uma de suas superclasses. Quando um objeto é criado, o sistema define sua propriedade objectCategory para o valor especificado pela propriedade defaultObjectCategory de sua classe de objeto. A propriedade objectCategory de um objeto não pode ser alterada.

Para obter mais informações e um exemplo de código que recupera a propriedade objectClass de um objeto, consulte Recuperando o atributo objectClass.

Importante

Antes do Windows Server 2008, o atributo objectClass não é indexado. Isso ocorre porque ele tem múltiplos valores e é altamente não-único; ou seja, cada instância do atributo objectClass inclui a classe superior . Isso significa que um índice seria muito grande e ineficaz. Para localizar objetos de uma determinada classe, use o atributo objectCategory , que é de valor único e indexado. Para obter mais informações sobre como usar essas propriedades em filtros de pesquisa, consulte Decidindo o que localizar.

 

Para a maioria das classes, o defaultObjectCategory é o nome distinto do objeto classSchema da classe. Por exemplo, o defaultObjectCategory para a classe organizationalUnit é "CN=Organizational-Unit,CN=Schema,CN=Configuration,DC<=forestroot>". No entanto, algumas classes se referem a outra classe como seu defaultObjectCategory. Isso permite que uma consulta encontre prontamente grupos de objetos relacionados, mesmo que sejam de classes diferentes. Por exemplo, as classes user, person, organizationalPerson e contact identificam a classe person em suas propriedades defaultObjectCategory. Isso permite que filtros de pesquisa como (objectCategory=person) localizem instâncias de todas essas classes com uma única consulta. Consultas para pessoas são muito comuns, então essa é uma otimização simples.

Se você criar uma subclasse a partir de uma classe estrutural, a prática recomendada é definir o valor defaultObjectCategory da nova classe para o mesmo nome distinto da superclasse. Isso permite que a interface do usuário padrão "localize" a subclasse.