In this tutorial, we aim to provide a comprehensive guide to customizing data using accessors and mutators in object-oriented programming.
You will learn about the concept of accessors and mutators, their importance, how to create and use them in your code. We'll use JavaScript as our primary language for the examples.
Basic understanding of JavaScript and Object-Oriented Programming (OOP) concepts is required.
Accessors and mutators are methods used to declare or modify the data of an object. The term 'accessor' refers to methods used to access the properties of an object, while 'mutators' are used to modify or set the properties.
Accessors are methods that retrieve the property value of an object. In JavaScript, we use get
keyword to create an accessor.
Mutators are methods used to set the value of a property in an object. In JavaScript, we use set
keyword to create a mutator.
class Person {
constructor(name) {
this._name = name;
}
// Accessor
get name() {
return this._name;
}
// Mutator
set name(newName) {
this._name = newName;
}
}
let person = new Person("John");
console.log(person.name); // Outputs: John
person.name = "Jane";
console.log(person.name); // Outputs: Jane
In this example, we have a Person
class with a _name
property. We use the get
keyword to create a name
accessor method that returns the _name
property. We also use the set
keyword to create a name
mutator method that sets the value of the _name
property.
class Rectangle {
constructor(width, height) {
this._width = width;
this._height = height;
}
// Accessor
get area() {
return this._width * this._height;
}
// Mutator
set dimensions(dimensions) {
this._width = dimensions.width;
this._height = dimensions.height;
}
}
let rectangle = new Rectangle(5, 10);
console.log(rectangle.area); // Outputs: 50
rectangle.dimensions = { width: 10, height: 20 };
console.log(rectangle.area); // Outputs: 200
In this example, the area
accessor calculates and returns the area of the rectangle. The dimensions
mutator takes an object with width
and height
properties and sets the _width
and _height
properties of the Rectangle
object.
We've covered the concept of accessors and mutators, how to create and use them in JavaScript. Remember, using accessors and mutators is a best practice in object-oriented programming as it provides a way to control how object properties are accessed and modified.
Create a class Circle
with a property _radius
. Implement an accessor area
to calculate and return the area of the circle. Use the formula πr^2
.
Extend the Circle
class to include a mutator diameter
that accepts a new diameter for the circle and adjusts the _radius
accordingly.
// Solution to Exercise 1
class Circle {
constructor(radius) {
this._radius = radius;
}
get area() {
return Math.PI * this._radius * this._radius;
}
}
let circle = new Circle(5);
console.log(circle.area); // Outputs: 78.53981633974483
// Solution to Exercise 2
class Circle {
constructor(radius) {
this._radius = radius;
}
get area() {
return Math.PI * this._radius * this._radius;
}
set diameter(newDiameter) {
this._radius = newDiameter / 2;
}
}
let circle = new Circle(5);
console.log(circle.area); // Outputs: 78.53981633974483
circle.diameter = 10;
console.log(circle.area); // Outputs: 78.53981633974483
In the solution to exercise 1, we calculate the area using the formula πr^2
. In the solution to exercise 2, we set the new radius to be half of the new diameter.
Keep practicing and exploring more about accessors and mutators in JavaScript and other Object-Oriented Programming languages. Happy Coding!