Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 42 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
42
Dung lượng
474 KB
Nội dung
What is Object Oriented Programming? An object is like a black box. The internal details are hidden. • Identifying objects and assigning responsibilities to these objects. • Objects communicate to other objects by sending messages. • Messages are received by the methods of an object 1 What is an object? • Tangible Things as a car, printer, • Roles as employee, boss, • Incidents as flight, overflow, • Interactions as contract, sale, • Specifications as colour, shape, … 2 So, what are objects? • an object represents an individual, identifiable item, unit, or entity, either real or abstract, with a well-defined role in the problem domain. Or • An "object" is anything to which a concept applies. Etc. 3 Why do we care about objects? • Modularity - large software projects can be split up in smaller pieces. • Reuseability - Programs can be assembled from pre-written software components. • Extensibility - New software components can be written or developed from existing ones. 4 Example: The Person class #include<string> #include<iostream> class Person{ char name[20]; int yearOfBirth; public: void displayDetails() { cout << name << " born in " << yearOfBirth << endl; } // }; private data public processes The two parts of an object Object = Data + Methods or to say the same differently: An object has the responsibility to know and the responsibility to do. 6 = + Basic Terminology • Abstraction is the representation of the essential features of an object. These are ‘encapsulated’ into an abstract data type. • Encapsulation is the practice of including in an object everything it needs hidden from other objects. The internal state is usually not accessible by other objects. 7 Basic Terminology: Inheritance • Inheritance means that one class inherits the characteristics of another class. This is also called a “is a” relationship: 8 A car is a vehicle A teacher is a person A dog is an animal Basic Terminology: Polymorphism • Polymorphism means “having many forms”. It allows different objects to respond to the same message in different ways, the response specific to the type of the object. 9 E.g. the message displayDetails() of the Person class should give different results when send to a Student object (e.g. the enrolment number). Basic Terminology: Aggregation • Aggregation describes a “has a” relationship. One object is a part of another object. • We distinguish between composite aggregation (the composite “owns” the part) and shared aggregation (the part is shared by more then one composite). 10 A car has wheels. [...]... that f() can be called safely for a volatile object, it's declared volatile too Pointers and objects int x = 10 ; int *p; p p = &x; p gets the address of x in memory 10 x What is a pointer? int x = 10 ; int *p; p p = &x; *p = 20; *p is the value at the address p 20 x What is a pointer? int x = 10 ; int *p = NULL; p = &x; Declares a pointer to an integer & is address operator gets address of x *p = 20;... memory Point *p = new Point(5, 5); // free the memory delete p; For every call to new, there must be exactly one call to delete Using new with arrays int x = 10 ; int* nums1 = new int [10 ]; int* nums2 = new int[x]; // ok // ok • Initializes an array of 10 integers on the heap ... procedure value, i.e., a method) 12 The two steps of Object Oriented Programming • Making Classes: Creating, extending or reusing abstract data types • Making Objects interact: Creating objects from abstract data types and defining their relationships 13 Classes (syntax simplified) A class is also a value that can be in an expression position class $ attr 〈AttrName1〉 : 〈AttrNamen〉 meth 〈Pattern〉 〈Statement〉... visible among all instances of a given class, but not to subclasses • A public member is visible anywhere in the program • By default, attributes are private and methods are public 16 Function and data member 17 continue 18 Default Arguments • • A default argument is a value given in the function declaration that the compiler automatically inserts if the caller does not provide a value for that argument... Terminology: Behaviour and Messages • The most important aspect of an object is its behaviour (the things it can do) A behaviour is initiated by sending a message to the object (usually by calling a method) 11 Abstract classes • ListClass is an abstract class, i.e., a class in which some methods are left undefined (such as init and append) • Abstract classes are not intended to be instantiated, but inherited... arguments after it must have default values Once an argument is defaulted in a function call, all the remaining arguments must be defaulted int f(int x, int y=0, int n) // illegal int f(int x, int y=0, int n =1) // legal Static Members 22 Continue 23 Function overloading • Function redefined with different set of arguments EX: • add(float, float) • Add(int, int) • Add (int, int, int) • Function overloading... languages use words like public, private, and protected to define visibility • Unfortunately, different languages use these keywords to define different scopes – Source of enormous confusion! Be careful! 15 Public and private scopes • In Smalltalk and Oz, a private member is one which is only visible in the object instance – The object instance can see all the private members in its class and its super... 13 Classes (syntax simplified) A class is also a value that can be in an expression position class $ attr 〈AttrName1〉 : 〈AttrNamen〉 meth 〈Pattern〉 〈Statement〉 end : meth 〈Pattern〉 〈Statement〉 end end 14 Controlling visibility • Visibility is the control given to the user to limit access to members of a class (attributes and methods) • Each member (attribute or method) is defined with a scope (part . in the program • By default, attributes are private and methods are public 16 Function and data member 17 continue 18 Default Arguments • A default argument is a value given in the function. types and defining their relationships. 13 Classes (syntax simplified) A class is also a value that can be in an expression position class $ attr 〈AttrName1〉 : 〈AttrNamen〉 meth 〈Pattern〉 〈Statement〉. do). A behaviour is initiated by sending a message to the object (usually by calling a method). 11 Abstract classes • ListClass is an abstract class, i.e., a class in which some methods are left