Partilhar via


Classe de objeto e categoria de objeto

Cada instância de uma classe de objeto tem uma propriedadeobjectClassde 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 o superior, pessoa, organizationalPerson e classes de de usuário. 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 propriedadeobjectCategory, 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 propriedadedefaultObjectCategoryde 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 propriedadeobjectClassde um objeto, consulte Recuperando o atributo objectClass.

Importante

Antes do Windows Server 2008, o atributo objectClass não estava indexado. Isso ocorre porque ele tem vários valores e é altamente não-exclusivo; 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 encontrar.

 

Para a maioria das classes, o defaultObjectCategory é o nome distinto do objetoclassSchemada classe. Por exemplo, o defaultObjectCategory para a classeorganizationalUnit é "CN=Organizational-Unit,CN=Schema,CN=Configuration,<DC=forestroot>". No entanto, algumas classes referem-se a outra classe como seus defaultObjectCategory. Isso permite que uma consulta encontre prontamente grupos de objetos relacionados, mesmo que sejam de classes diferentes. Por exemplo, as classes user, person, organizationalPersone contact classes identificam a classe pessoa 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, por isso esta é 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 "encontre" a subclasse.