Operating System
Operating System
a) Data
b) Instructions for processing that data
into a self-sufficient object that can be used within a program or in other programs.
Programming techniques
a) Unstructured Programming (Assembly language programming)
b) Procedural Programming (Assembly language, C programming)
c) Object Oriented Programming (C++, Java, Smalltalk, C#, Objective C)
Unstructured Programming
This consists of just writing the sequence of commands or statements in the main
program, which modifies the state maintained in Global Data. Example: Assembly
Language programs.
Assembly Language: Similar to machine language, but provides names for numeric
instructions present in the machine language, making it easy for the programmer.
2. Variables
Global Variables
a) The variables that are declared outside any function body.
b) These variables exist for the entire life-cycle of the program.
c) Global variables can be accessed from anywhere within the program.
Local Variables
a) The variables that are declared within a function body.
b) Their scope is limited to within the function body.
c) Local variables cannot be accessed outside the function body.
Object
Object: is a bundle of related variables and functions (also known methods).
Examples:
eg 1:
Object: House
State: Current Location, Color, Area of House etc
Behavior: Close/Open main door.
eg 2:
Object: Car
State: Color, Make
Behavior: Climb Uphill, Accelerate, SlowDown etc
Characteristics of Objects:
1. Abstraction
2. Encapsulation
3. Message passing
Message passing
A single object by itself may not be very useful. An application contains many objects.
One object interacts with another object by invoking methods (or functions) on that
object. Through the interaction of objects, programmers achieve a higher order of
functionality which has complex behavior.
One object invoking methods on another object is known as Message passing.
It is also referred to as Method Invocation.
Class
A class is a prototype that defines the variables and the methods common to all
objects of a certain kind. Member Functions operate upon the member variables of
the class. An Object is created when a class in instantiated.
Defining a variable :
E.g. GraduationCourse mycourse= new GraduationCourse();
Abstraction
The purpose of abstraction is to hide information that is not relevant or rather show
only relevant information and to simplify it by comparing it to something similar in
the real world.
Abstraction means The process of forming of general and relevant concept from
more complex scenarios.
Note 1: Abstraction is used to build complex systems.
Key to simplify a complex design into smaller, manageable parts which then
become the components of a bigger and complex system.
The idea of hiding the complexity within a smaller/simple component of a system.
Note 2: Abstraction is not a feature of Object oriented concepts alone. Even in
procedural language programming, abstraction can be achieved to a limited extent by
hiding complex internals through well formed business logic and functions.
Encapsulation
Encapsulation means the localization of the information or knowledge within an
object.
Encapsulation is also called as Information Hiding.
1) Objects encapsulate data and implementation details. To the outside world, an
object is a black box that exhibits a certain behavior.
2) The behavior of this object is what which is useful for the external world or other
objects.
3) An object exposes its behavior by means of methods or functions.
4) The set of functions an object exposes to other objects or external world acts as
the interface of the object.
Benefits of Encapsulation
1) The functionality where in we can change the implementation code without
breaking the code of others who use our code is the biggest benefit of Encapsulation.
2) Here in encapsulation we hide the implementation details behind a public
programming interface. By interface, we mean the set of accessible methods our code
makes available for other code to callin other words, our codes API.
3) By hiding implementation details, We can rework on our method code at a later
point of time, each time we change out implementation this should not affect the
code which has a reference to our code, as our API still remains the same
class EmployeeCount
{
private int NoOfEmployees = 0;
public void setNoOfEmployees (int count)
{
NoOfEmployees = count;
}
public double getNoOfEmployees ()
{
return NoOfEmployees;
}
}
class Encapsulation
{
public static void main(String args[])
{
System.out.println("Starting EmployeeCount...");
EmployeeCount employeeCount = new EmployeeCount ();
employeeCount. setNoOfEmployees (12003);
System.out.println("NoOfEmployees = " + employeeCount. getNoOfEmployees ());
}
}
Takeaway from above example:
The application using an Object of this class EmployeeCount will not able to get the
NoOfEmployees directly.
Setting and getting the value of the field NoOfEmployees is done with the help of
Getter and setter method as shown below.
Inheritance
The process by which one class acquires the properties and functionalities of another
class. Inheritance provides the idea of reusability of code and each sub class defines
only those features that are unique to it.
3. The existing (or original) class is called the base class or super class or parent
class. The new class which inherits from the base class is called the derived
class or sub class or child class.
Note : The biggest advantage of Inheritance is that, code in base class need not be
rewritten in the derived class.
The member variables and methods of the base class can be used in the derived
class as well.
Inheritance Example
Consider below two classes
Class Teacher:
class Teacher {
private String name;
private double salary;
private String subject;
public Teacher (String tname) {
name = tname;
}
public String getName() {
return name;
}
private double getSalary() {
return salary;
}
private String getSubject() {
return subject;
}
}
Class: OfficeStaff
class OfficeStaf{
private String name;
private double salary;
private String dept;
public OfficeStaf (String sname) {
name = sname;
}
public String getName() {
return name;
}
private double getSalary() {
return salary;
}
private String getDept () {
return dept;
}
}
Points:
1) Both the classes share few common properties and methods. Thus repetition of
code.
2) Creating a class which contains the common methods and properties.
3) The classes Teacher and OfficeStaff can inherit the all the common properties and
methods from below Employee class
class Employee{
private String name;
private double salary;
public Employee(String ename){
name=ename;
}
public String getName(){
return name;
}
private double getSalary(){
return salary;
}
}
4) Add individual methods and properties to it Once we have created a super class
that defines the attributes common to a set of objects, it can be used to create any
number of more specific subclasses
5) Any similar classes like Engineer, Principal can be generated as subclasses from the
Employee class.
6) The parent class is termed super class and the inherited class is the sub class
7) A sub class is the specialized version of a super class It inherits all of the instance
variables and methods defined by the super class and adds its own, unique elements.
8) Although a sub class includes all of the members of its super class it can not access
those members of the super class that have been declared as private.
9) A reference variable of a super class can be assigned to a reference to any sub class
derived from that super class
i.e. Employee emp = new Teacher();
Types of Inheritance
Multilevel Inheritance
Multilevel inheritance refers to a mechanism in OO technology where one can inherit
from a derived class, thereby making this derived class the base class for the new
class.
Multiple Inheritance
Multiple Inheritance refers to the concept of one class inheriting from more than
one base class. The inheritance we learnt earlier had the concept of one base class or
parent. The problem with multiple inheritance is that the derived class will have to
manage the dependency on two base classes.
Note 1: Multiple Inheritance is very rarely used in software projects. Using Multiple
inheritance often leads to problems in the hierarchy. This results in unwanted
complexity when further extending the class.
Note 2: Most of the new OO languages like Small Talk, Java, C# do not support
Multiple inheritance. Multiple Inheritance is supported in C++.
Polymorphism
Polymorphism is a feature that allows one interface to be used for a general class of
actions. Its an operation may exhibit different behavior in different instances. The
behavior depends on the types of data used in the operation. It plays an important
role in allowing objects having different internal structures to share the same
external interface. Polymorphism is extensively used in implementing inheritance.
Types of Polymorphism
1) Static Polymorphism
2) Dynamic Polymorphism
Static Polymorphism:
Function Overloading within same class more than one method having same name
but differing in signature.
Resolved during compilation time.
Return type is not part of method signature.
Dynamic Polymorphism
Function Overriding keeping the signature and return type same, method in the
base class is redefined in the derived class.
Resolved during run time.
Which method to be invoked is decided by the object that the reference points to and
not by the type of the reference.
Overriding:
Redefining a super class method in a sub class is called method overriding.
The method signature ie. method name, parameter list and return type have to match
exactly.
The overridden method can widen the accessibility but not narrow it, ie if it is private
in the base class, the child class can make it public but not vice versa.
Overriding Examples:
Consider a Super Class Doctor and Subclass Surgeon. Class Doctor has a
method treatPatient(). Surgeon overrides treatPatient method ie gives a new definition
to the method.
The concept of the same function name with different types of parameters being
passed is called Function Overloading.
1) In Overloading we can reuse the same method name by changing the arguments.
2) Overloaded methods- Must and Must Not Facts:
Can have different return types but in that case it is mandatory to have
different argument list.
Interface: Syntax
Abstract method
1) A method that is declared but not defined
2) Declared with the keyword abstract
3) Example :
Constructors
Static methods
Private methods
Abstract Classes
Abstract Classes
Outlines the behavior but not necessarily implements all of its behavior. Also known
as Abstract Base Class.
Provides outline for behavior by means of method (abstract
methods) signatures without an implementation.
Note 1: There can be some scenarios where it is difficult to implement all the
methods in the base class. In such scenarios one can define the base class as an
abstract class which signifies that this base class is a special kind of class which is not
complete on its own.
A class derived from the abstract base class must implement those member functions
which are not implemented in the abstract class.
What is a Constructor
1) A method with the same name as class name used for the purpose of creating an
object in a valid state
2) It does not return a value not even void
3) It may or may not have parameters (arguments)
4) A class contains one or more constructors for making new objects of that class
5) If (and only if) the programmer does not write a constructor, Java provides a
default constructor with no arguments.
A constructor for a class can call another constructor for the same class by putting
this(); as the first thing in the constructor. This allows you to avoid repeating code.
The class which is identified after generalization is the base class. The classes over
which the generalization is made are the derived classes.
The classes over which the generalization is built are viewed as Specialization.
Access Specifiers
Access specifiers in a class
An access specifier is a keyword in OO Programming languages, which specify what
access is permitted on a member.
There are three types of access specifiers:
public: Accessible to all. Other objects can also access this member variable or
function.
private: Not accessible by other objects. Private members can be accessed only by
the methods in the same class. Object accessible only in Class in which they are
declared.
protected: The scope of a protected variable is within the class which declares it and
in the class which inherits from the class (Scope is Class and subclass)
Default: Scope is Package Level