You are on page 1of 16

Session 6

Main topics:
 Classes
 Objects
Dart is an object-oriented language. It supports object-oriented
programming features like classes, interfaces, etc.

What is the Object-Oriented Programming?


Procedural programming is about writing procedures or
functions that perform operations on the data, while object-
oriented programming is about creating objects that contain
both data and functions.

 OOP is faster and easier to execute.


 OOP provides a clear structure for the programs.
 OOP helps to keep the code DRY "Don't Repeat Yourself", and
makes the code easier to maintain, modify and debug.
 OOP makes it possible to create full reusable applications with less
code and shorter development time.
What are Classes and Objects?
Classes and objects are the two main aspects of object-oriented
programming.
 Object − Objects have states and behaviors. Example: A dog has
states - color, name, breed as well as behaviors – wagging the tail,
barking, eating. An object is an instance of a class.
 Class − A class can be defined as a template/blueprint that
describes the behavior/state that the object of its type support.

We will go deep in each concept separately now.


Classes
A class in terms of OOP is a blueprint for creating objects.
A class encapsulates data for the object. Dart gives built-in support for this
concept called class.

Declaring a Class
We use the class keyword to declare a class in Dart. A class
definition starts with the keyword class followed by the class
name; and the class body enclosed by a pair of curly braces.
The syntax for the same is like:
The class keyword is followed by the class name. The rules for
identifiers must be considered while naming a class.
A class definition can include the following −
 Fields − A field is any variable declared in a class. Fields represent
data pertaining to objects.
 Setters and Getters − Allows the program to initialize and retrieve
the values of the fields of a class. A default getter/ setter is
associated with every class. However, the default ones can be
overridden by explicitly defining a setter/ getter.
 Constructors − responsible for allocating memory for the objects of
the class.
 Functions − Functions represent actions an object can take. They
are also at times referred to as methods.

These components put together are termed as the data


members of the class.

The example declares a class Car. The class has a field


named engine. The disp() is a simple function that prints the
value of the field engine.
Creating Instance of the class
To create an instance of the class, use the new keyword followed
by the class name.

class_name object_name = new class_name([arguments]);

 The new keyword is responsible for instantiation.


 The right-hand side of the expression invokes the constructor.
The constructor should be passed values if it is
parameterized.

Ex:

Car car = new Car("Engine 1");


Accessing Attributes and Functions
A class’s attributes and functions can be accessed through the
object. Use the . dot notation (called as the period) to access the
data members of a class.

Ex:
Constructors
A constructor is a special function of the class that is
responsible for initializing the variables of the class. Dart
defines a constructor with the same name as that of the class.

A constructor is a function and hence can be parameterized.


However, unlike a function, constructors cannot have a return
type. If you don’t declare a constructor, a default no-argument
constructor is provided for you.

Ex:
Named Constructors
Dart provides named constructors to enable a class
define multiple constructors.

Ex:
The this Keyword
The this keyword refers to the current instance of the class. Here,
the parameter name and the name of the class’s field are the same.
Hence to avoid ambiguity, the class’s field is prefixed with
the this keyword.

Ex:
Getters and Setters
Getters and Setters, also called as accessors and mutators,
allow the program to initialize and retrieve the values of class
fields respectively. Getters or accessors are defined using
the get keyword. Setters or mutators are defined using
the set keyword.
A default getter/setter is associated with every class. However,
the default ones can be overridden by explicitly defining a setter/
getter. A getter has no parameters and returns a value, and the
setter has one parameter and does not return a value.
Ex:
Class Inheritance
Dart supports the concept of Inheritance which is the ability of a
program to create new classes from an existing class. The
class that is extended to create newer classes is called the
parent class/super class. The newly created classes are called
the child/sub classes.
A class inherits from another class using the extends
keyword. Child classes inherit all properties and methods
except constructors from the parent class.

Ex:

Note: Dart doesn’t support multiple inheritance.


Class Inheritance and Method Overriding
Method Overriding is a mechanism by which the child class
redefines a method in its parent class.

Ex:

Note: The number and type of the function parameters must


match while overriding the method. In case of a mismatch in the
number of parameters or their data type, the Dart compiler throws
an error.
Objects
Object-Oriented Programming defines an object as “any entity
that has a defined boundary.” An object has the following −
 State − Describes the object. The fields of a class represent
the object’s state.
 Behavior − Describes what an object can do.
 Identity − A unique value that distinguishes an object from a
set of similar other objects. Two or more objects can share
the state and behavior but not the identity.
The period operator (.) is used in conjunction with the object to
access a class’ data members.
Dart represents data in the form of objects. Every class in Dart
extends the Object class. Given below is a simple example of
creating and using an object.
Thanks, Good Luck!

You might also like