text:
|Publication number
|Publication type
|Application number
|Publication date
|Jul 30, 2002
|Filing date
|Oct 22, 1998
|Priority date
|Oct 22, 1998
|Fee status
|Also published as
|Publication number
|Curtis Howard Brobst, James Edward Carey, Bradley William Fawcett, Siegfried Wiesenhofer
|Original Assignee
|International Business Machines Corporation
|Export Citation
|BiBTeX, EndNote, RefMan
|Patent Citations (10), Non-Patent Citations (4), Referenced by (9), Classifications (13), Legal Events (4)
|External Links: USPTO, USPTO Assignment, Espacenet
1. Technical Field
This invention generally relates to object oriented programming and more specifically relates to a mechanism and method for storing and retrieving elements of collections in an object oriented environment.
2. Background Art
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs. As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
Computer systems typically include operating system software that controls the basic function of the computer, and one or more software application programs that run under the control of the operating system to perform desired tasks. For example, a typical IBM Personal Computer may run the OS/2 operating system, and under the control of the OS/2 operating system, a user may execute an application program, such as a word processor. As the capabilities of computer systems have increased, the application software programs designed for high performance computer systems have become extremely powerful. Additionally, software development costs have continued to rise because more powerful and complex programs take more time, and hence more money, to produce.
One way in which the performance of application software programs has been improved while the associated development costs have been reduced is by using object oriented programming concepts. The goal of using object oriented programming is to create small, reusable sections of program code known as "objects" that can be quickly and easily combined and re-used to create new programs. This is similar to the idea of using the same set of building blocks again and again to create many different structures. The modular and re-usable aspects of objects will typically speed development of new programs, thereby reducing the costs associated with the development cycle. In addition, by creating and re-using a comprehensive set of well-tested objects, a more stable, uniform, and consistent approach to developing new computer programs can be achieved.
A central concept in object oriented programming is the "class." A class is a template that defines a type of object. A class outlines or describes the characteristics or makeup of objects that belong to that class. By defining a class, objects can be created that belong to the class without having to rewrite the entire definition for each new object. This feature of object oriented programming promotes the reusability of existing object definitions and promotes more efficient use of program code.
Many software applications need to operate on data that already exists, and need to store data for later use by another software application. A database is generally used to store persistent data, that is, data that survives beyond the life of a software process that may create, use, or modify the data. Databases are known in the art as persistent storage mechanisms (or simply, persistent stores). Often, data in an object oriented computer system needs to be stored in a "collection", which is a grouping of objects that have one or more common characteristics. A collection is typically defined by an object that stores references to objects that are elements of the collection, and by object methods that allow adding an element, removing an element, and replacing an element in the collection (referred to collectively herein as "maintaining elements" on the collection). One known way to provide a collection defines one or more "keys" that are used to classify data within the collection, and provides intelligence regarding how that elements in the collection may be maintained within the collection itself. However, this approach requires a programmer to custom-define the constraints and the operations for maintaining the collection for each collection in the system. In addition, known containers that are used to store collections may use character strings as a key, but do not have the ability to use object pointers as a key. Thus, a programmer must typically provide a set of limited keys that have unique string identifiers that allows them to be used as keys. These limitations create a significant amount of work for the programmer that needs to provide the capability of maintaining information in a collection using keys in an object oriented program. Without a mechanism for allowing a programmer to flexibly define keys for a collection and constraints on maintenance of elements within the collection, the computer industry will continue to suffer from excessive development costs for object oriented applications that are custom-programmed to support particular key and maintenance constraints with very little reusability of the code.
In an object oriented computer system, an object oriented mechanism and method defines a common interface to maintain elements on a collection while providing the capability of using virtually any suitable object as a key to the collection. A programmer defines an interface on a collection that includes suitable object methods for adding, removing, and replacing elements of the collection. The constraints that determine whether elements may be added, removed, or replaced is encapsulated in a policy that is defined by the programmer. The programmer identifies one or more keys, which may include any suitable object in the object oriented system. A maintainer class provides a client interface for maintaining elements on the collection according to the defined policy and according to the keys defined by the programmer. The present invention recognizes the common characteristics that exist in maintaining elements on a keyed collection, and provide predetermined classes and class relationships that provide support for maintaining any collection using any key that a programmer may define.
The foregoing and other features and advantages of the invention will be apparent from the following more particular description of preferred embodiments of the invention, as illustrated in the accompanying drawings.
The preferred embodiments of the present invention will hereinafter be described in conjunction with the appended drawings, where like designations denote like elements, and:
FIG. 1 is a block diagram of an apparatus in accordance with a preferred embodiment of the present invention;
FIG. 2 is a flow diagram showing the steps in defining classes in an object oriented mechanism that maintains elements on a keyed collection using any suitable object as a key, and shows the step of maintaining the keyed collection according to the keys and policies defined by the mechanism;
FIG. 3 is a class diagram showing the classes and class relationships for providing collection that encapsulates maintenance constraints and that allows using any suitable object as a key;
FIG. 4 is a class diagram showing an example of using the classes of FIG. 3 in a specific application; and
FIG. 5 is an object interaction diagram showing the addition of an element to a collection using the classes of FIG. 4.
The present invention is accomplished through the use of object oriented programming concepts. For those who are not familiar with object oriented programming concepts, the brief overview below provides background information that will help the reader to understand the present invention.
1. Overview
Object Oriented Technology v. Procedural Technology
Object oriented programming is a method of program implementation in which programs are organized as cooperative collections of objects, each of which represents an instance of some class, and whose classes are all members of a hierarchy of classes united via inheritance relationships. Object oriented programming differs from standard procedural programming in that it uses objects, not algorithms, as the fumdamental building blocks for creating computer programs. This difference stems from the fact that the design focus of object oriented programming technology is wholly different than that of procedural programming technology.
The focus of procedural-based design is on the overall process used to solve the problem; whereas the focus of object oriented design is on casting the problem as a set of autonomous entities that can work together to provide a solution. The autonomous entities of object oriented technology are, of course, objects. Object oriented technology is significantly different from procedural technology because problems are broken down into sets of cooperating objects instead of into hierarchies of nested computer programs or procedures.
Thus, a pure object oriented program is made up of code entities called objects. Each object is an identifiable, encapsulated piece of code and data that provides one or more services when requested by a client. Conceptually, an object has two parts, an external object interface and internal object implementation. In particular, all object implementation functions are encapsulated by the object interface such that other objects must communicate with that object through its object interface. The only way to retrieve, process or otherwise operate on the object is through the methods defined on the object. This protects the internal data portion of the object from outside tampering. Additionally, because outside objects have no access to the internal implementation, that internal implementation can change without affecting other aspects of the program.
In this way, the object system isolates the requester of services (client objects) from the providers of services (server objects) by a well defined encapsulating interface. In the classic object model, a client object sends request messages to server objects to perform any necessary or desired function. The message identifies a specific method to be performed by the server object, and also supplies any required parameters. The server object receives and interprets the message, and can then decide what operations to perform.
There are many computer languages that presently support object oriented programming techniques. For example, Smalltalk, Object Pascal, C++ and Java are all examples of programming languages that support object oriented programming to one degree or another.
2. Detailed Description
According to a preferred embodiment of the present invention, an object oriented mechanism and method allow a user to define maintenance constraints and a simple maintenance interface on a collection. The mechanism allows any suitable object to be used as a key to classifying elements (i.e., data) stored in the collection. In this manner, any client object that needs to access data in the collection may use the maintenance interface without requiring that the object contain any intelligence regarding the key scheme or constraints that govern the accessing of data within the collection.
Referring to FIG. 1, a computer system 100 in accordance with the preferred embodiment is an enhanced Windows NT computer system. However, those skilled in the art will appreciate that the mechanisms and apparatus of the present invention apply equally to any computer system, regardless of whether the computer system is a complicated multi-user computing apparatus or a single user workstation. As shown in FIG. 1, computer system 100 comprises a processor 110 connected to a main memory 120, a mass storage interface 130, a terminal interface 140, and a network interface 150. These system components are interconnected through the use of a system bus 160. Mass storage interface 130 is used to connect mass storage devices (such as a direct access storage device 155) to computer system 100. One specific type of direct access storage device is a floppy disk drive, which may store data to and read data from a floppy diskette 195.
Main memory 120 contains data 121, an operating system 122, and an object oriented object mechanism 123 in accordance with the preferred embodiments. Object mechanism 123 includes multiple pre-defined classes 124, which include a container class 125, a maintainer class 126, a policy class 127, an element class 128, and a key class 129. While the classes 125-129 are shown in FIG. 1 as residing within the object mechanism 123 according to the preferred embodiment, it is equally within the scope of the invention to have one or more of these classes provided separate from the object mechanism 123.
The container class 125 defines an object oriented container that can hold a collection of object oriented objects. The maintainer class 126 defines logic for adding, removing, and replacing data in the collection stored in an instance of the container class 125. The maintainer class provides the public interface for performing all maintenance on the collection. The policy class 127 defines constraints relating to the maintenance of the collection. For example, the policy class may require that an object be of a certain type before allowing it to be added to the collection. The element class 128 defines elements, or members, of the collection residing within an instance of the container class 125. The key class 129 defines one or more keys that are used to classify instances of the element class 128. Note that instances of key class 129 may be any suitable object, but for the preferred embodiments herein, instances of the key class 129 are persistent objects.
Computer system 100 utilizes well known virtual addressing mechanisms that allow the programs of computer system 100 to behave as if they only have access to a large, single storage entity instead of access to multiple, smaller storage entities such as main memory 120 and DASD device 155. Therefore, while data 121, operating system 122, and object mechanism 123 are shown to reside in main memory 120, those skilled in the art will recognize that these items are not necessarily all completely contained in main memory 120 at the same time. It should also be noted that the term "memory" is used herein to generically refer to the entire virtual memory of computer system 100.
Data 121 represents any data that serves as input to or output from any program in computer system 100. Operating system 122 is a multitasking operating system known in the industry as Windows NT; however, those skilled in the, art will appreciate that the spirit and scope of the present invention is not limited to any one operating system. Operating system 122 preferably supports an object oriented programming environment such as that provided, for example, by the Java programming language.
Processor 110 may be constructed from one or more microprocessors and/or integrated circuits. Processor 110 executes program instructions stored in main memory 120. Main memory 120 stores programs and data that processor 110 may access. When computer system 100 starts up, processor 110 initially executes the program instructions that make up operating system 122. Operating system 122 is a sophisticated program that manages the resources of computer system 100. Some of these resources are processor 110, main memory 120, mass storage interface 130, terminal interface 140, network interface 150, and system bus 160.
Although computer system 100 is shown to contain only a single processor and a single system bus, those skilled in the art will appreciate that the present invention may be practiced using a computer system that has multiple processors and/or multiple buses. In addition, the interfaces that are used in the preferred embodiment each include separate, fully programmed microprocessors that are used to off-load compute-intensive processing from processor 110. However, those skilled in the art will appreciate that the present invention applies equally to computer systems that simply use I/O adapters to perform similar functions.
Terminal interface 140 is used to directly connect one or more terminals 165 to computer system 100. These terminals 165, which may be non-intelligent (i.e., dumb) terminals or fully programmable workstations, are used to allow system administrators and users to communicate with computer system 100. Note, however, that while terminal interface 140 is provided to support communication with one or more terminals 165, computer system 100 does not necessarily require a terminal 165, because all needed interaction with users and other processes may occur via network interface 150.
Network interface 150 is used to connect other computer systems and/or workstations (e.g., 175 in FIG. 1) to computer system 100 across a network 170. The present invention applies equally no matter how computer system 100 may be connected to other computer systems and/or workstations, regardless of whether the network connection 170 is made using present-day analog and/or digital techniques or via some networking mechanism of the future. In addition, many different network protocols can be used to implement a network. These protocols are specialized computer programs that allow computers to communicate across network 170. TCP/IP (Transmission Control Protocol/Internet Protocol) is an example of a suitable network protocol.
It is also important to point out that the presence of network interface 150 within computer system 100 means that computer system 100 may engage in cooperative processing with one or more other computer systems or workstations on network 170. Of course, this in turn means that the programs and data shown in main memory 120 need not necessarily all reside on computer system 100. For example, one or more portions shown in main memory 120 may reside on another system and engage in cooperative processing with one or more objects or programs that reside on computer system 100. This cooperative processing could be accomplished through use of one of the well known client-server mechanisms such as remote procedure call (RPC).
At this point, it is important to note that while the present invention has been and will continue to be described in the context of a fully functional computer system, those skilled in the art will appreciate that the present invention is capable of being distributed as a program product in a variety of forms, and that the present invention applies equally regardless of the particular type of signal bearing media used to actually carry out the distribution. Examples of suitable signal bearing media include: recordable-type media such as floppy disks (e.g., 195 of FIG. 1) and CD ROM, and transmission type media such as digital and analog communications links.
The remainder of this specification describes the structure and function of object mechanism 123. Object mechanism 123 allows using any object to be used as a key to classifying elements within a collection. Object mechanism 123 segregates the functions relating to the collection according to its classes. The container class 125 holds a collection of instances of the element class 128, with each element being classified according to an instance of the key class 129. The maintainer class 126 contains the logic for adding, removing, and replacing elements in the collection along with any other logic for performing suitable operations on the collection or on elements within the collection. The discussion herein generally refers to the addition, removal, and replacement of elements of the collection for the purpose of illustration, recognizing that maintainer class 126 contains the logic for performing not only these enumerated functions, but any logic for other suitable operations on the collection as well. The policy class 127 defines constraints on the operations of the maintainer. By separating the functions of object mechanism 123 into these classes, a more uniform, flexible, and reusable design results. A programmer may program different constraints in the policy class 127 without changing the logic within the maintainer class 126 and without changing the container class 125. A programmer may use different objects as keys without affecting the container class 125, the maintainer class 126, or the policy class 127. This judicious separation of functions into separate classes provides advantages not found in the prior art. Object mechanism 125 is described below with reference to FIGS. 2-5.
Referring to FIG. 2, a method 200 provides steps 210-240 that define object mechanism 123, instantiates object mechanism 123 in step 250, then uses object mechanism 123 to maintain elements on the collection in step 260. The first step 210 is to define the container class. The container class is a class that "contains" a collection of objects. In other words, an instance of container class 210 will hold references to multiple objects that make up a collection. The term "collection" herein is used to refer to the group of objects that are stored within an instance of the container class 210, while a "container" is the instance of the container class 125 that holds the collection.
The next step 220 is to define the policy class 127, which defines constraints on the maintenance of the collection that will be stored within an instance of the container class 125. One suitable example of a policy requires that all objects stored in the collection be of a particular type, or implement a particular interface, or contain a particular attribute. If an object does not meet the constraints defined by the policy class 127, it will not be stored in the collection. By providing the policy class 127, the collection is said to be "flexibly constrained" because the policy class 127 may be easily changed or replaced by a user to define new constraints.
The next step 230 is to define the key class 129, which defines classifications of elements (or objects) stored within the collection. For example, if the elements within the collection are employees, the classifications of part-time and full-time may be used, and/or the classifications of hourly and salaried may be used. Each of these classifications would have a corresponding key object (instance of the key class 129) that may be used to classify the elements within the collection.
The next step 240 is to define the maintainer class 126 to provide the internal logic for maintaining the collection using the methods defined by the interface of the container class 125 according to the constraints in the policy class 127 and the keys in the key class 129. At this point the object mechanism 123 has been defined, and the classes that comprise object mechanism 123 are instantiated (step 250). Once the classes are instantiated, the instance of the maintainer class provides a public interface-for any client object or program to add, remove, or replace elements in the collection (step 260) by simply invoking the add( ), remove( ), or replace( ) methods on the maintainer instance. The function of object mechanism 123 in response to the invocation of these methods is described in more detail below, particularly in reference to FIG. 5.
Referring now to FIG. 3, a class diagram shows classes within object mechanism 123, which include the classes 125-129 shown in FIG. 1. In addition, container class 125 is shown as a subclass of a PropertyContainer class 310, which represents that many object oriented systems have predefined containers. Container class 125 may be a suitable subclass of a predefined container 310 rather than having to program the container class 125 from scratch. One suitable predefined container that could correspond to PropertyContainer class 310 is disclosed in U.S. Ser. No. 08/927,944 "Property Container Type Objects" filed Sep. 11, 1998. A handle class 320 is also provided, which provides a unique handle identifier instance that is associated with each key instance. The handle class encapsulates a unique persistent object reference that uniquely identifies an object associated with one of its instances. While handle class 320 is explicitly shown for the key class 129 for the purpose of illustrating the present invention, one skilled in the art will recognize that one or more of the other classes within object mechanism 123 may also have corresponding handles.
The container class 125 defines methods that may be invoked to maintain the collection stored within an instance of the container class 125. Examples of suitable methods include add( ), remove( ) and replace( ). Add( ) is invoked to add an element to the collection stored within the container instance, passing the element to be added as a parameter. Remove( ) is invoked to remove an element from the collection stored within the container instance, passing the element to be removed as a parameter. Replace( ) is invoked to replace one element in the collection with a different element, passing both the key of the element to be replaced and the new element as parameters. The container class has a "contains by reference" relationship with the element class 128, indicating that the container holds references to one or more element instances that comprise the collection.
A maintainer class 126 is provided, which defines add( ), remove( ), replace( ) and possibly other methods that are invoked to add, remove, replace, or otherwise maintain elements in the collection that are store in an instance of the container class 125. The maintainer class 126 includes logic that determines if constraints in the policy class allow elements in the collection to be added, removed, or replaced, and further includes logic to classify each element in the collection according to one or more keys defined by the key class 129. The maintainer class 126 has a "uses" relationship with the container class 125, indicating that the internal logic of the maintainer class may invoked methods on the container class. The relationship between the key class 129 and the element class 128 is shown by a dotted line, indicating that each instance of the element class 128 is "keyed by" an instance of the key class 129, which means that each element is classified within the collection according to one or more keys.
The key class 129 defines objects that may be used as keys to classifying the elements within the collection. In the prior art, containers could receive strings as keys, but objects typically could not be used as keys because the objects were dynamically created at run-time and did not have a fixed name and could therefore be used as a key. However, key class 129 has an associated handle class 320. An instance of the handle class 320 is an identifier within an object oriented system that is unique across all objects in the system. By associating a handle with each key, a key maintains a unique identity that remains fixed, even if the name of the key changes. This allows the key handle to be used as an identifier that uniquely identifies the key in the system. This approach allows the key class 129 to be used in conjunction with prior art containers that can only receive string keys by converting a key's handle to a string, and by using the string to classify elements stored in the collection.
The key class has a "contains by value" relationship with the policy class, indicating that each key will have an associated policy associated with it. Note that a key is not required to have an associated policy. If no policy is specified, there will be no constraints on the add( ), remove( ) and replace( ) methods that are used to maintain the collection. The policy class 127 is a policy that determines criteria for maintaining elements on the collection. While the policy class 127 is shown in FIG. 3 as a single class in the preferred embodiment, the present invention extends to any combination of classes or objects that perform the function of providing criteria or constraints on maintaining elements in a collection. One suitable variation could use a chain of responsibility policy scheme, such as that disclosed in U.S. Ser. No. 09/038,352 "Method of Using Decoupled Chain of Responsibility", filed Mar. 11, 1998. In addition, while policy class 127 is shown being contained by the key class 129, the policy class 127 could be attached to the maintainer class 126, the container class 125, the element class 128, or any other suitable class so long as the maintainer class 126 knows how to retrieve an appropriate instance of the policy class 127.
Referring to FIG. 4, a specific example of the class diagram of FIG. 3 may help to understand to concepts of the preferred embodiment. The specific example of FIG. 4 assumes that a company has a collection of accounts, which are classified according to the type of journal entry that corresponds to the account. A CompanyContainer class 425 is defined as a particular example of a suitable container class. As in FIG. 3, the CompanyContainer class 425 is a subclass of the PropertyContainer class 310, which is a predefined class in some object oriented system. The elements of interest in this example are accounts, represented by the Account class 428. The keys are defined by the JournalEntryType class 428, which has corresponding handles 320. A validation policy 427 contains constraints on the add( ), remove( ) and replace( ) methods that are invoked on the maintainer class 426 to assure that the accounts are properly validated (i.e., allowed for that type of journal entry) before they are performed.
The function of an object mechanism 123 as shown in FIG. 4 is best understood with reference to the object interaction diagram of FIG. 5. Each object in FIG. 5 is an instance of the corresponding classes in FIG. 4, with the exception of the aClient object, which represents any object or program that is capable of invoking methods on the aMaintainer object to maintain the collection stored in the aCompanyContainer object. We assume for purposes of illustration that the aClient object first invokes the add( ) method on aMaintainer, passing the container, element, and key as parameters (step 1). This operation in step 1 of FIG. 5 is a request by the aClient object to add an account object named anAccount to the collection stored in aCompanyContainer using aJournalEntryType as the key (or classification) for the anaccount object. In response, the aMaintainer object invokes the getValidationPolicy( ). method on the specified key, aJournalEntryType (step 2). The aMaintainer object then invokes the validate( ) method on the anAccount object, passing the aValidationPolicy object as a parameter (step 3).
Note that the validation in step 3 is only performed if a corresponding validation policy exists.
For the example in FIG. 5, in response to step 3, the anAccount object invokes the isValid( ) method on the aValidationPolicy object (step 4), passing anAccount as a parameter. The isValid( ) method determines whether the anAccount object meets the constraints defined in the aValidationPolicy object. If the anAccount object does not meet the constraints in the aValidationPolicy object, an exception is thrown. If the anAccount object does meet the constraints in the aValidationPolicy object, the anAccount returns an indication to the amaintainer object that the anAccount object has been validated. At this point in time, the aMaintainer has successfully validated the element to be added to the collection.
The aMaintainer object then invokes the getStringRepresentation( ) method on the aJournalEntryType object (step 5). In response, the aJournalEntryType object invokes the getString( ) method on the aJournalEntryTypeHandle object (step 6), which is the unique handle that corresponds to the aJournalEntryType object. In response, thehandle converts its unique identifier into a string and returns the string to the aJournalEntryType object, which in turn returns the string to the aMaintainer object. At this point, the aMaintainer object has obtained the string identifier that identifies the appropriate key object (i.e., aJournalEntryType) that is used to classify the anAccount object, and the anAccount object may be added to the collection with its corresponding key by invoking the addPropertyBy( ) method on the aCompanyContainer object, passing the string of the key and the object to be added (i.e., anAccount) as parameters (step 7). The aCompanyContainer object then adds the anAccount object to its stored collection of objects, along with its corresponding stringified key.
The object mechanism 123 of the present invention provides a great deal of power and flexibility in maintaining elements in collections. First, by providing a validation policy as a separate class, the constraints for maintaining the collection may be changed by simply changing the policy class, without affecting other classes. Second, by providing the capability of converting a unique handle of any suitable object, such as a persistent object, into a string, virtually any object may be used as a key to classify elements in the collection. Because the handle of the object is used as the key, the key for the object will not change, even if the name of the object changes of if its location in memory changes. Third, the object mechanism 123 may be used without affecting containers that are already defined, even if the containers can only key elements using strings, because the mechanism 123 provides the capability of providing a unique string that corresponds to any key object. Fourth, the client interface for maintaining the collection and the logic for interacting with the elements and policy is all contained within the maintainer class. Of course, other advantages that are not specifically recited herein will be apparent to one skilled in the art.
One skilled in the art will appreciate that many variations are possible within the scope of the present invention. Thus, while the invention has been particularly shown and described with reference to preferred embodiments thereof, it will be understood by those skilled in the art that these and other changes in form and details may be made therein without departing from the spirit and scope of the invention.
|Cited Patent
|Filing date
|Publication date
|Oct 28, 1996
|Jun 9, 1998
|Sun Microsystems, Inc.
|Method and apparatus for managing transactions in an object-oriented distributed system
|Jan 31, 1997
|Nov 24, 1998
|Sun Microsystems, Inc.
|System, method and article of manufacture for providing dynamic user editing of object oriented components used in an object oriented applet or application
|Mar 28, 1997
|Aug 10, 1999
|International Business Machines Corporation
|Object oriented technology framework for warehouse control
|Mar 11, 1998
|Oct 17, 2000
|International Business Machines Corporation
|Software business objects in a multi-level organizational structure
|Oct 20, 1997
|Nov 21, 2000
|International Business Machines Corporation
|Object oriented distributed programming system for computer controlled networks with selective capture of program property data identifying a particular program version
|Sep 29, 1998
|Feb 27, 2001
|International Business Machines Corporation
|Object mechanism and method for coupling together processes to define a desired processing environment in an object oriented framework
|Jun 12, 1998
|May 8, 2001
|International Business Machines Corporation
|Apparatus and method for disabling methods called on an object
|Aug 26, 1998
|Aug 14, 2001
|Object Technology Licensing Corp.
|Object-oriented operating system
|Nov 7, 1997
|May 13, 1998
|International Business Machines Corporation
|Framework for software development
|Nov 14, 1997
|Jul 22, 1998
|International Business Machines Corporation
|Access key objects
|Goldberg et al., "Smalltalk-80: The Language", Addison-Wesley, pp. 132-169, 1989.*
|Joseph Bergin, "Data Abstraction-The Object-Oriented Approach Using++", McGraw-Hill, Inc., Chapter 3, pp. 73-117, 1994.*
|Joseph Bergin, "Data Abstraction—The Object-Oriented Approach Using++", McGraw-Hill, Inc., Chapter 3, pp. 73-117, 1994.*
|Tromp, "Design Methodology for Class Libraries", Revue HF Tijdschrift, vol. 16, No. 3/4, pp. 3-12, 1992.
|Citing Patent
|Filing date
|Publication date
|Apr 30, 1999
|Jan 6, 2004
|Hewlett-Packard Development Company, L.P.
|Java and native application window integration
|Dec 19, 2000
|Jan 31, 2006
|Tajen Corporation
|Method for enabling a compiler or interpreter to use identifiers found at run time in a map container object in a manner similar or identical to identifiers declared at compile time
|Jan 8, 2002
|Dec 19, 2006
|International Business Machines Corporation
|Method and system for localizing Java™ JAR files
|May 14, 2001
|May 1, 2007
|University Of North Carolina At Charlotte
|Incremental clustering classifier and predictor
|May 14, 2001
|May 16, 2002
|Mirsad Hadzikadic
|Incremental clustering classifier and predictor
|Dec 19, 2000
|Sep 19, 2002
|Hills Theodore S.
|Method for enabling a compiler or interpreter to use identifiers found at run time in a map container object in a manner similar or identical to identifiers declared at compile time
|Jan 8, 2002
|Jul 10, 2003
|International Business Machines Corporation
|Method and system for localizing java jar files
|Jun 18, 2001
|Jul 17, 2003
|Z-Force Corporation
|System of reusable software parts and methods of use
|Jul 22, 2004
|Feb 3, 2005
|Nolics Oy
|Grouping of objects in object-oriented system
|U.S. Classification
|717/108, 717/117, 717/116, 717/114, 717/107, 717/165, 707/999.101, 707/999.102
|International Classification
|Cooperative Classification
|European Classification
|Oct 22, 1998
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BROBST, CURTIS HOWARD;CAREY, JAMES EDWARD;FAWCETT, BRADLEY WILLIAM;AND OTHERS;REEL/FRAME:009540/0358;SIGNING DATES FROM 19981007 TO 19981016
|Feb 15, 2006
|Maintenance fee reminder mailed
|Jul 31, 2006
|Lapse for failure to pay maintenance fees
|Sep 26, 2006
|Expired due to failure to pay maintenance fee
Effective date: 20060730


text:
|Log in!
Click here to log in
New account
4 million accounts created!
JOIN our free club and learn for free now!
Learn Italian > Italian lessons and exercises > Italian test #112537
At school
Twitter Share
Italian exercise "At school" created by anonyme with The test builder
Click here to see the current stats of this Italian test [Save] [Load] [?]
End of the free exercise to learn Italian: At school
A free Italian exercise to learn Italian.
Other Italian exercises on the same topic : Idioms | All our lessons and exercises

subset: commoncrawl


text:
Home › Forums › Get Advice, Give Advice › "How Do I Ask My Partner's Family to Send Invites to Me?"
This topic contains 37 replies, has 9 voices, and was last updated by Firestar 7 months, 1 week ago.
- AuthorPosts
Dang girl, you got some hangups!
Repeat after me: "No one is as concerned about me as I am."
Once you get it in your head that not every single comment or action is done purposefully, vindictively, or to spite you, I think you'll have an easier time dealing with his family members.
Being gifted a book for your children that is "perfect for Daddies to read to little girls" isn't a slam against you. It doesn't mean "NOT FOR MOMMIES!"
If you change your mindset away from the perpetual victim, you might actually enjoy yourself, and them!
The issue you are mentioning in the update is totally different than the original issue. Originally the issue was that you don't know about get togethers until the last minute. Now the issue is that they are rude to you when you do get together and they act like you aren't there.
I wouldn't take a sick child out. I never took my kids anywhere when they had a fever so you had the perfect opportunity to stay home. It is up to you to be concerned for the welfare of your child. Don't let someone who doesn't care about your child push you into making bad decisions for that child. You are the parent. It is your responsibility to put the welfare of your child ahead of whining from relatives. The fact that you took your child out sick is on you.
If you are talking about Christmas you wouldn't need to know the date and time when the family will have Christmas to know that you will be exchanging gifts and to purchase them in advance. Unless you sometimes aren't invited and there is no family Christmas with the extended family you are being passive/aggressive waiting until you know the date and time to purchase gifts.
If they are generally rude to you don't go. You can decide to stay home. They can only be rude to you if you make yourself available. You can send your husband by himself or with the kids or all of you can stay home. If none of you enjoy it tell them you won't be there. It is easy enough to say you are starting your own traditions with your own immediate family and that you plan to stay home. You don't have to mention that one of the traditions you are starting is being kind and thoughtful. It is up to you to create the atmosphere for your family. If his family is toxic and he would rather avoid them anyway you have an easy route to just stay home.
To respond to your collection of random points:
1) If he wants to gift nuts and they like nuts, sounds like a win/win to me. *You* decide nuts aren't enough and there must be more gifts so yes, *you* are responsible for that. Let your husband be responsible for gifts for his family and you just go along with what he gets them. (sure, add a card but that's it) The gifting stuff is a bunch of drama that you have created.
2) I'm not sure what you want for taking your sick daughter to family Christmas? A medal? You should have stayed home. Frame it as for their own good if nothing else will fly– "What if it's contagious? I wouldn't want anyone else to catch it…" Or send your husband with other kid by himself while you and sick kid stay home.
3) I don't see any bus throwing going on? I see you creating drama, you looking for slights at every turn. A gift for dad to read with daughter does not exclude mom. You invited a bitchy comment back with the "well can't I read to her?" You say thank you and then when the book is home, either one of you can read. They aren't there. They aren't the boss of bedtime. Why even bring it up?
4) You know how you don't get "left behind in public?" You go with him. Go downstairs with him and when its gift time, you stay down there and tell your BF he has to do gifts. I wonder if he thinks social events are difficult because you make them difficult.
Yeah, your update is super confusing and doesn't have anything to do with your original question. (Mark, I think this one is teetering on the edge of DISRESPECT! "Behold all the ways in which I feel his family Disrespects me…") So now if your boyfriend leaves your side in "public" -his sister's home- ever, he's abandoning you? Do you need him to go to the bathroom with you too? Maybe his sisters don't address you much because you bristle at everything they say. If my SIL were defensive and bitchy about every little comment, I wouldn't want to talk to her or invite her to things either.
And I seriously don't know what's wrong with you that you would drag a sick toddler to a family gathering and then be a martyr about it. It's not good for her and you could get everyone else sick, too. That's why half of my friends and their kids are all sick after the holidays.
The "etiquette" here is for you to be polite and gracious to your hosts. If they give a gift, thank them! And don't get all butthurt about everything they do. They are probably not doing it "at" you, but if you keep up acting the way you do, they might start.
Any chance you have a chip on your shoulder about not actually being married, but common-law?
Raccoon eyesMember
Yeah… It sounds like you are in your own head too much. The majority of things in life are not being done "to" you. It comes down to the concept that most ppl tend to judge others by their ACTIONS and themselves by their INTENTIONS. (Fundamental Attribution Error? Or something like that, I believe.) I personally experienced an enormous difference in my own well-being, increase in happiness in general, a lowering of my stress levels, etc., a few years back when I began shifting my way of thinking.
"Everyone you meet is fighting great battles," is a mantra that helps me too. It is so easy to just think in terms of yourself, but when you retrain yourself to think in the bigger picture (and that everything isnt "against" or "aimed at" you), you will notice the difference (and so will others).
I am telling you this with the best of intentions, not to pile on.
Also, therapy- it is awesome to have a person with no stake in your actions to talk to and talk through stuff. Try it- I promise it is worth it.
Northern Star
Why in the world were you "hurt" that your BF's sister gave her brother a book to read to his daughter? That was a ridiculous reaction on your part, which makes me think you are looking for slights that don't exist.
Maybe your husband drags his feet about accepting invites from his family because you are making those get-togethers difficult.
And don't bring your sick child to Christmas if you don't want to. You're not "being a good in-law" by doing so.
Hey it's the OP- yes, writing to late and too tired. I have some hypothyroid and it affects mood sleep and so I want to make sure I'm not overreacting but will also read more of the boards to learn about the proper etiquette. Every family is different. This family has had early death of Mother and immediate blended family. It feels like my BF is still very attached to his family and it also feels like the mom shaming the passive aggressive mom hating has passed from the step mom to me. I'll post about the other issues separately, but it is HIS issue as someone posted, that he doesn't show me the respect in planning- it's a mention and then we are going or not.
He asked his sister who used to be a nurse if we should come and because he kept on it and others were in from out of town and it was a 'low grade fever' we went. But I see he has a problem with changing plans once he made his mind and I have to be the Mama and just say no. He stressed over the decision and doesn't really defer to me. He enters events without me even when I said before the event: remember we are here as a couple. Often times in social situations we arrive together but it's like I'm not there at all. So unless I catch him the moment we arrive and say: wait for me don't go down without me– he won't remember the request.
There is a long history of ignoring and neglecting the step mom so I do believe it's deliberate that the one sister said thanks for the nuts the book is just for you. The other 'more
Normal' sister looked at the trinkets the girls made, remarked on them, asked how we made them.. I'm not being overly sensitive. The oldest one is the one they had to pull aside any remind her 'he's no longer available to her like when they were kids because he's married with children now'
I'm used to talking about plans, dividing responsibilities, socially acting like a couple (I'm not a cling on but being separate until the drive home and not sharing one conversation or checking in with each other is something I'm not comfortable with) nearing the event in used to updates progress and re jigging any details.
What I hear some of you saying is: do what you want, don't worry about what they think. But I feel like the nuclear birth family excludes me — like I'm an add on. Maybe I'm being too precious but I feel that I brought two sweet girls into this family and for that reason alone I feel I have earned a modicum of respect and good manners.
I took out a chunk of story which made the comprehension tough I'll be sure to stop and read and set up separate posts from now on. This is a learning curve.
Thank you ladies and gents for your fierce and fast opinions..
They know you are a couple. You don't need to make a grand entrance every time. You live together and spend the whole day talking to each other. You are at family gatherings to socialize with family. If he's ostentatiously ignoring or avoiding you, that's one thing, but come on! If you spend the whole time talking to each other, you won't have anything to share on the ride home!
Northern Star
Well, you ARE an add-on. You didn't grow up with these people. You are family now, but they will always have a tighter bond with each other. Your SILs will put your husband first. Not you. Especially if they don't really like you as a person much.
This still all sounds like problems with your husband. HIS decision-making, HIS reactions, HIS choices are the issue.
It's not really about his family. Following someone's rules of "etiquette" (what are you even talking about?) isn't going to magically force your errant SIL to like or respect you. And you don't like or respect her either, right?
All of this would simply be a minor irritant if your partner backed you up. Your issues start with him (and yourself).
And I'm not sure what their stepmom has to do with anything.
OF course you are an add-on. That is what an in law is. Someone one of the family sprung on the rest of them without any say. I'm not sure what you want? You want validation that the eldest sister doesn't much like you or sees you as an unwelcome interloper? Okay. Probably. You want to change their behaviour and have them welcome you like the Disney movie you are picturing? Those are not the cards you are dealt. Sorry. No go. You want your partner to act more like a partner and include you in decision making and family plans – and apparently wait for you to walk in a room together? Have that discussion. If he doesn't… then accept it… or not. Doesn't tell you in advance? Don't go. Only wants to give roasted nuts? He gives the nuts. You hold the baby. He walks downstairs after a quick hi? You too. There is no bus. I don't know why this is so difficult. Some people like baby-made kitsch. Others don't. Truly it's really only charming to grandparents. So if it's not welcome – don't give it. Roasted nuts it is.
Saying "can I read it too?" is annoying and whiney. Was there a retinal scanner that prevented you from opening the book and reading it? What the fuck were you hoping to convey with that passive aggressive statement? Putting the sister in her place for assuming you can't relive your childhood through the rereading of the books? Seriously? Do you know how ridiculous that sounds? You have beloved books you want to reread with your child? Buy the damn books then. That's what I did. I have series 1-20 of Nancy Drew I'm just waiting for my kid to be old enough to like. I bought them when she was one and I'm just chomping at the bit. It isn't anyone else's job to create these special moments for me (and let's be real – I might get through the first chapter before my child asks me to read her Spider-man ….again). It wasn't about you and the specialness of rereading childhood stories. The sister was trying to create a special moment for her brother. And you tried to ruin it by making it about you. Maybe that's why she doesn't like you.
The only thing you can control is you. Your actions. Your reactions. Think what you want to accomplish. Your choice thus far haven't been helping you. Or your partner, it seems, if his solution to all this nonsense is to stay home because of all the drama being created by you.
And you keep a sick baby home. That's your job as mom. To act in their interest all the time. If you thought a low grade fever wasn't that big of deal to take her out – then that is on you. If you think any fever means baby stays home then that is what you do. No one gets to trump what you think is best for your kid…and you don't get to blame anyone else for making a bad decision. Your partner could have gone alone. It's an option.
Look – it sounds like you want the his family to perceive your relationship in a certain way, and respond and treat you a certain way. But you can't force people to accept your relationship or work with it the way you want it to. You just can't. You can't make them do what they don't want to do.
What you can do is work with your partner to create the relationship you both want to be in, and to present yourselves to the world as a united front. If you're not on the same page both within the relationship and how you're going to handle the outside world, work on that with him. But beyond that, there's nothing you can do. Worrying about it and trying to force outside parties to change is going to drive you insane.
Make sure your relationship is solid, and then just let it go.
You do have to have some ideas about etiquette and how respect is accorded that seem – strange? Like having to enter an event together, that's one I've never heard. These are just family get together, right? Not the red carpet at the Met Gala or something. You can go in separately, you can separate and circulate throughout the night, nbd.
Ding ding ding we have the magic word: "respect."
You want validation? Fine, here it is: sounds like your SILs don't care for you and are not going out of their way to pretend otherwise. Accept it won't be the most wonderful couple hours of your life when you visit them. Be cordial. Go in with low expectations. That's it.
And seriously… don't bring them handmade child crap, let your husband handle gifts. (I love my SIL and my nephews but really I don't want handmade child crap either. Like Firestar said, that's pretty much just for grandmas.)
- AuthorPosts


text:
Me and my husband got married 3 months ago, but before that everything had always been perfect. After we got married he started to be laid back and not care about my feelings, emotions and needs. I feel horrible, it's like I'm pushing myself away by not liking how he is behaving with me. It's really hurtful, I can't even sleep.
I've tried to let him know, but even though he says he will do better, he never does. It's worst every time. Even my guy friends care more about me than he does now. I'm so disappointed. I don't know what to do anymore.
All this is making me regret marrying him, and just leave. But I don't want to get to the point where I could. I still love him, and don't want this to fall apart. But I'm tired of him not caring anymore. And I need to be loved. What can I do?
Most Helpful Girl
You can expect some of that in any marriage, though three months is pretty early. You may have to meet him in the middle and learn to live with less of the benefits "courting" and "dating" phases give you. While he may not send you roses just to say, "I love you" or cuddle while watching movies or greet you with hugs and kisses anymore, the trade is that you know he's coming home to you, everyday, for the rest of your life. He sacrificed his bachelor-ness and promised to love...
And CHERISH - which it sounds like he's not doing. So, he'll need to improve a little too and stop taking things for granted. You could bargain with him using sex ploys "if you make me feel sexy, I'll show you how sexy I can be"...that type of thing.
Or, you may be able to make him jealous a bit and re-ignite some male ego. If a guy at work is flirting with you, for instance, mention it. Tell him that it's nice to hear compliments for a change. That could backfire, I suppose.
There is a member on this site named A R Norman...I'd search for her answers and maybe send her a message. She always has good advice and she's happily married.
Best wishes10|10|0


text:
Hollywood Film Awards | Photo Booth
The award season is officially underway thanks to a star-studded kickoff party hosted by Starz. The Los Angeles Times was on the scene to shoot this year's Hollywood Film Awards honorees backstage, including Supporting Actress Award winner Carey Mulligan ("Drive" and "Shame") and presenter Christoph Waltz.
Jay L. Clendenin / Los Angeles Times
Copyright © 2017, Daily Press
- Dance
- The Descendants (movie)
- Drive (movie)
- George Clooney
- Starz, LLC
- Shame (movie)
- Michelle Williams


text:
Coastal Thailand
Thailand Bike Tours
The Beautiful Coastal Provinces
This exotic cycling adventure will provide unique insight into the life and traditions of Thais and the beautiful southern coast. Long stretches of beaches, the beautiful island of Ko Talu and scenic areas around Koh Kho Khao and Khao Lak are highlights.
The tour begins in mystical Bangkok, capital of Thailand, and then heads south through the beautiful coastal provinces on the Gulf of Thailand and the Andaman Sea, ending on the coast in Khao Lak, where the beaches are seemingly endless.
- Thailands beaches and islands
- Bangkok
- Khao Sam Roi Yot National Park
- Island of Ko Talu
- Fishing villages
- Afternoon in Molken village
- Cooking a meal with local Thais
The emphasis on this Thailand bike tour is Thailand's history, culture, scenery and of course the beautiful coastline.
Want to see more bike tours in Thailand?
Price £ 2194 $ 3,456 € 2304 NOK 23042 kr 21269 $ 2,765 Single supplement: £ 405 $ 638 € 425 NOK 4250 kr 3923 $ 510
please note
Rates are based on double occupancy.
Information to read before you book.
We recommend purchasing bike trip insurance.
† Currency exchange rate set 90 days before travel.
Skill Level
Fully supported guided tour that covers 335 kilometers in nine cycling days on a mixture of tarmac and dirt roads, mostly on flat terrain. An air-conditioned support bus travels behind the group and participants can cycle as much or as little as they like and still enjoy the same views as the rest of the group.
Where You'll Stay
A wonderful mix of local homes, beachside resorts, and luxurious lodges.
What's Included
- All accommodations
- All meals except for lunch and dinner on rest day
- English speaking tour guide (two guides if group is larger than 8)
- Support vehicle
- 24 to 27 speed Trek mountain bike
- Fruit, healthy snacks, water and electrolyte drinks during the rides
- SpiceRoads drawstring bag, a water-bottle and a SpiceRoads bike jersey.
What's Not Included
- Travel insurance
|11 days
|$2765 Rates
|Client Reviews
Tour Dates
2017 Dates
October 15, November 5, and December 24, 2017
2018 Dates
January 7, February 4, March 18, October 14, November 4, and December 23, 2018
Day-To-Day Itinerary
Day 1: Bangkok - Ampawa, 22 mi. (35 km)
Day 2: Ampawa - Kaeng Krachan, 16 mi. (25 km)
Day 3: Kaeng Krachan - Hua Hin, 31 mi. (50 km)
Day 4: Hua Hin - Sam Roi Yot - Ban Krut, 31 mi. (50 km)
Day 5: Ban Krut - Ko Talu, 13 mi. (20 km)
Day 6: Ko Talu - Chumphon, 19 mi. (30 km)
Day 7: Chumpon - Ranong, 25 mi. (40 km)
Day 8: Ranong - Kuraburi, 13 mi. (20 km)
Day 9: Kuraburi – Takuapa, 16 mi. (25 km)
Day 10: Takuapa – Khao Lak, 25 mi. (40 km)
Day 11: Departure
Day 1: Bangkok - Ampawa, 22 mi. (35 km)
From Bangkok, the included transfer heads south to Mae Klong Delta area to begin the cycling at Damnoen Nam Saduak floating market, the biggest and most colorful in Thailand. Followed by embarkation on a long tail boat with a cruise through a maze of canals cutting through local villages and various plantations. This astonishing boat ride offers a glimpse of the Thailand of old where the canal is the focal point for the local people as a way of life. Once again on the bikes, the route leads through coconut plantations and fruit orchards along quiet back roads. Stops will include interesting temples such as the quirky Wat Bang Kung, held up by a huge banyan tree and the exceptional carved panels of Wat Bang Kae Noi. The night is spent in a traditional wooden Thai house by the river.
Day 2: Ampawa - Kaeng Krachan, 16 mi. (25 km)
After a short transfer, the cycling begins in the Kaeng Krachan National Park on the edge of a large reservoir with lovely views and breezes. The route leads along the shoreline and then inland through a tranquil area. Accommodation this evening is in a secluded and landscaped resort beside the river.
Day 3: Kaeng Krachan - Hua Hin, 31 mi. (50 km)
The morning cycling is on country roads through mango orchards, sugar cane fields, and palm plantations. Lunch will be at the Hua Hin Hills Vineyard where there will be wine tasting for those who want to sample Thai wine. Back roads lead then to Wat Huay Mongkol where a famous monk is revered. Overnight this evening is in the resort town of Hua Hin.
Day 4: Hua Hin - Sam Roi Yot - Ban Krut, 31 mi. (50 km)
Today's cycling follows a flat route to Sam Roi Yot (300 Hundred Peaks) National Park, with its stunning mountainous backdrop, as well as numerous caves, beaches, and limestone cliffs. After a lunch by the sea, the climb up to Phraya Nakhon cave to visit the two caverns will we well worth it. An afternoon transfer will end the day in Ban Kurt, a lovely seaside resort.
Day 5: Ban Krut - Ko Talu, 13 mi. (20 km)
Optional ride south along the coast through fishing villages to Bang Saphan Noi. Here a speedboat will transfer to the private island of Koh Talu. The afternoon is free to snorkel and see the colorful coral and fish, to kayak around the island, or to clamber up to the viewpoint.
Day 6: Ko Talu - Chumphon, 19 mi. (30 km)
Enjoy a morning swim and snorkeling before a boat transfer back to the mainland. The palm tree lined route today is along white sand beaches on one side and green lush hills on the other. As the sun sets this evening, there is opportunity to board a local fishing boat to see how squid is caught!
Day 7: Chumpon - Ranong, 25 mi. (40 km)
This day begins on the bikes with another coastal ride, however, the terrain will start to undulate, making it a bit different from earlier rides. Overnight is at the port city of Ranong which is also on the border with Burma. A visit to a coffee plantation is on the agenda as well a visit to orchards that produce long-gong and langsa which are small, sweet, and sour fruits grown only in the South of Thailand. Before continuing to the overnight port city of Ranong, there will be a stop at a waterfall for a refreshing dip.
Day 8: Ranong - Kuraburi, 13 mi. (20 km)
A morning visit to the local hot springs (three springs with temperatures at a constant 65°) is on the agenda before a drive to the next Thai experience at a village accessible only by boat. Local customs and traditions are experienced by spending the afternoon with a local family and to participate in a memorable dinner before heading back to the mainland in late evening.
Day 9: Kuraburi – Takuapa, 16 mi. (25 km)
Instead of a morning bike ride, there will be a morning guided hike to learn about the village's conservation activities to protect the mangroves and to restore endangered orchids, after which a short transfer will be provided to the old city of Takuapa, once a flourishing and wealthy trade port. A late afternoon cycle through the town is scheduled as well as a visit to the Tsunami memorial at Ban Nam Khem. There will be ample time to enjoy the beach, pool, or the spa at the seaside resort.
Day 10: Takuapa – Khao Lak, 25 mi. (40 km)
Heading inland on quiet back roads, through small villages and pass rubber plantations, the destination is the small waterfall of Sai Rung, a perfect spot for cooling off before lunch. Then it's a short cycle to the beachfront bungalows for the evening. A farewell dinner is scheduled which is always a highlight as all the experiences are recounted!
Day 11: Departure
View all our featured bike trips, specials, and news along with 100s of other other bike tours in Europe.
Email or Call 800-951-4384 +1 570-965-2064