rememberprogram objects may represent real objectsbut that does not make them real objects they are models one of the greatest gifts of modeling is the ability to ignore irrelevant details the model car built as child may look like real thunderbird on the outsidebut it doesn' run and the driveshaft doesn' turn these details were overly complex and irrelevant before started driving the model is an abstraction of real concept abstraction is another object-oriented concept related to encapsulation and information hiding simply putabstraction means dealing with the level of detail that is most appropriate to given task it is the process of extracting public interface from the inner details driver of car needs to interact with steeringgas pedaland brakes the workings of the motordrive trainand brake subsystem don' matter to the driver mechanicon the other handworks at different level of abstractiontuning the engine and bleeding the breaks here' an example of two abstraction levels for carcar driver +brakes +gas_pedal drives +steer(+change_gears(+apply_brake(mechanic car fixes +disc_brakes +fuel_injected_engine +automatic_transmission +adjust_brake(+change_oil(nowwe have several new terms that refer to similar concepts condensing all this jargon into couple of sentencesabstraction is the process of encapsulating information with separate public and private interfaces the private interfaces can be subject to information hiding the important lesson to take from all these definitions is to make our models understandable to other objects that have to interact with them this means paying careful attention to small details ensure methods and properties have sensible names when analyzing systemobjects typically represent nouns in the original problemwhile methods are normally verbs attributes can often be picked up as adjectivesalthough if the attribute refers to another object that is part of the current objectit will still likely be noun name classesattributesand methods accordingly