Object Instance Annotation for Flexible Data Extension

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Object-oriented programming faces challenges in extending existing class instances with additional data, as current methods are either impractical, restricted, or lead to object schizophrenia due to different object identities for base and extended objects, and existing techniques like dictionary-based mapping are inefficient and expose extended data.

Innovation Solution

A technology for object instance annotation that allows developers or the programming language to add, retrieve, and remove annotations on objects, supporting various types, including reference and value types, and private classes, enabling flexible and efficient data extension without object identity issues.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If class inheritance is used to extend data in object-oriented programming, then additional fields can be added to classes, but the application must carefully use the new subclass rather than the original base class, which is impractical when the application has no control over instance creation

Engineering Contradiction:
Improvedata extension capabilityVSAvoidusage complexity
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The patent introduces an intermediary annotation mechanism that sits between the base class and the extended data requirements. Instead of forcing subclass usage, the annotation system acts as a mediator that allows runtime addition of fields to existing instances without changing the class hierarchy or instance creation process. The annotation interface provides the intermediary layer that bridges the gap between immutable base classes and dynamic data extension needs.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If dictionary-based mapping is used to maintain instance annotations, then instance annotation can be implemented, but the dictionary gets potentially congested as the number of instances grows, and base data and extended data are exposed in very different ways

Engineering Contradiction:
Improveinstance annotation capabilityVSAvoidstorage structure complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent transitions from a flat dictionary-based storage structure to a more dimensional approach where annotations are integrated into the object instance structure itself. Instead of using a separate dictionary that grows congested with instances, the annotation data is organized in a structured format that scales efficiently. The annotation interface provides a dimensional organization that separates the annotation metadata from the instance data, allowing efficient access without congestion.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

3Adaptability or versatility

If open-class mechanisms are used to add members to existing classes, then any sort of members including fields can be added, but these methods are normally restricted to design-time class extension and are too restricted for runtime extension

Engineering Contradiction:
Improveclass extension flexibilityVSAvoidextension timing restriction
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent implements a dynamic annotation system that allows class extension at runtime rather than being restricted to design-time only. The annotation interface enables fields to be added to existing class instances dynamically during execution. This dynamic capability is achieved through reflection-based mechanisms that allow the system to modify instance structure on the fly, breaking the temporal restriction between design-time and runtime extension.

Inventive Principle:
Principle #15Dynamics

4Adaptability or versatility

If decorator design pattern is used to enable decoration of existing instances by behavior and data, then instance extension is possible, but the resulting designs suffer from object schizophrenia where base objects and extended objects carry different object identities

Engineering Contradiction:
Improveinstance decoration capabilityVSAvoidobject identity consistency
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent merges the annotation data structure with the original object instance identity, eliminating the separation that causes object schizophrenia. Instead of creating separate decorator objects with different identities, the annotation system combines the extended data with the original instance in a unified structure. The annotation interface provides access to both base and extended data while maintaining a single consistent object identity, resolving the identity fragmentation problem.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS8132093B2Instance annotation in object-oriented programming
Publication Date: 2012.03.06 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8132093B2 patent drawing
  • US8132093B2 patent drawing
  • US8132093B2 patent drawing

AI summary

Object instance annotation technology is disclosed. This technology is capable of annotating any number of instances for any number of objects. Object instance annotations can be of various types, and annotations can serve as data extensions. Objects are enabled for annotation either by developers, or, alternatively, automatically by a programming language or framework. Furthermore, an interface is provided for annotations. This interface has a variety of operations, some of which allow for adding, retrieving, or removing annotations. Annotations can be reference types or even value types. They may also be private class types. Once object instances are enabled for annotating, and the interface is set up, this interface can annotate a multitude of different kinds of objects. For example, it can annotate generic objects, XML trees, CodeDom trees, and so on.