The document discusses advanced object-oriented concepts including constructors, overloading methods, the superclass, scope, and operator overloading. Constructors initialize objects and are called when a new object is created. Methods can be overloaded by changing their signature. The superclass constructor is called from a subclass constructor. Scope determines accessibility of attributes and methods.
The document discusses advanced object-oriented concepts including constructors, overloading methods, the superclass, scope, and operator overloading. Constructors initialize objects and are called when a new object is created. Methods can be overloaded by changing their signature. The superclass constructor is called from a subclass constructor. Scope determines accessibility of attributes and methods.
– In Java and C#, constructors are methods that share the same name as the class. – Visual Basic .NET uses the designation New. – Objective-C uses the init keyword. When a Constructor is Called
When a new object is created, one of the first
things that happens is that the constructor is called. – The constructor creates a new instance of the class, • thus allocating the required memory. – Then the constructor itself is called, passing the arguments in the parameter list. • Providing the opportunity to attend to the appropriate initialization. What’s Inside a Constructor
Perhaps the most important function of a
constructor is to initialize the memory allocated. – In short, code included inside a constructor should set the newly created object to its initial, stable, safe state. The Default Constructor
If the class provides no explicit constructor, a
default constructor will be provided. – It is important to understand that at least one constructor always exists, regardless of whether you write a constructor yourself. – If you do not provide a constructor, the system will provide a default constructor for you. Using Multiple Constructors
In many cases, an object can be constructed in
more than one way. – To accommodate this situation, you need to provide more than one constructor. – This is called overloading a method (overloading pertains to all methods, not just constructors). • Most OO languages provide functionality for overloading a method. Overloading Methods
Overloading allows a programmer to use the
same method name over and over. – As long as the signature of the method is different each time. – The signature consists of the method name and a parameter list The Superclass
When using inheritance, you must know how the
parent class is constructed. – Inside the constructor, the constructor of the class’s superclass is called. – Each class attribute of the object is initialized. – The rest of the code in the constructor executes. Designing Constructors
It is good practice to initialize all the attributes.
– In some languages, the compiler provides some sort of initialization. – As always, don’t count on the compiler to initialize attributes! – Constructors are used to ensure that the application is in a stable (or safe) state. Error Handling
Assuming that your code has the capability to
detect and trap an error condition, you can handle the error in several ways: – Ignore the problem—not a good idea! – Check for potential problems and abort the program when you find a problem. – Check for potential problems, catch the mistake, and attempt to fix the problem. – Throw an exception. (Often this is the preferred way to handle the situation.) The Concept of Scope
§ Multiple objects can be instantiated from a
single class. – Each of these objects has a unique identity and state. – Each object is constructed separately and is allocated its own separate memory. Types of Scope
§ Methods represent the behaviors of an object;
the state of the object is represented by attributes. – Local attributes – Object attributes – Class attributes Local Attributes
Local attributes are owned by a specific method
– Local variables are accessible only inside a specific method. – In Java, C#, C++ and Objective-C, scope is delineated by curly braces ({ }). public method() { int count; } Object Attributes
In many design situations, an attribute must be
shared by several methods within the same object. public class Number { int count; // available to both method1 and method2 public method1() { count = 1; } public method2() { count = 2; } } Class Attributes
It is possible for two or more objects to share
attributes. In Java, C#, C++ and Objective-C, you do this by making the attribute static:
public class Number {
static int count; public method1() { } } Operator Overloading
Some OO languages allow you to overload an
operator. – C++ is an example of one such language. Operator overloading allows you to change the meaning of an operator. – More recent OO languages like Java, .NET, and Objective-C do not allow operator overloading. Multiple Inheritance
Multiple inheritance allows a class to inherit from
more than one class. – Multiple inheritance can significantly increase the complexity of a system, – Java, .NET, and Objective-C do not support multiple inheritance (C++ does). – In some ways interfaces compensates for this. Object Operations
Comparing primitive data types is quite
straightforward. – Copying and comparing objects is not quite as simple. – The problem with complex data structures and objects is that they might contain references. • Simply making a copy of the reference does not copy the data . structures or the object that it references