برنامه نویسی

برنامه نویسی شی گرا (OOP): 4 ستون را با مثال های واضح درک کنید

Summarize this content to 400 words in Persian Lang
هی توسعه دهنده! امروز قصد داریم در مورد برنامه نویسی شی گرا (OOP) صحبت کنیم. این پارادایم برای سازماندهی داده ها و رفتارها با استفاده از «اشیاء» ضروری است. اگر برای مصاحبه شغلی آماده می شوید، تسلط بر این مفاهیم می تواند تفاوت را ایجاد کند.

ما چهار ستون OOP را به روشی واضح و عملی با مثال هایی که به شما کمک می کند همه چیز را به راحتی درک کنید، بررسی خواهیم کرد.

برنامه نویسی شی گرا چیست؟

OOP بر چهار ستون اصلی استوار است:

کپسولاسیون
ارث
چند شکلی
انتزاع

بیایید با مثال هایی در جاوا اسکریپت به هر یک از این ستون ها نگاه دقیق تری بیندازیم.

1. کپسولاسیون

کپسولاسیون مانند نگهداری وسایل شما در یک جعبه است. شما هر چیزی را که نیاز دارید داخل آن قرار می دهید و کنترل می کنید که چه کسی می تواند به آن دسترسی داشته باشد. این به محافظت از داده های ذخیره شده کمک می کند و تضمین می کند که وضعیت داخلی شیء ایمن باقی می ماند.

مثال:

class User {
constructor(name, age) {
this.name = name;
this.age = age;
}

// Public method
displayInfo() {
return `${this.name}, ${this.age} years old`;
}

// Private method
_checkAge() {
return this.age >= 18 ? ‘an adult’ : ‘a minor’;
}

displayStatus() {
return `${this.name} is ${this._checkAge()}.`;
}
}

const user = new User(‘Alice’, 22);
console.log(user.displayInfo()); // Alice, 22 years old
console.log(user.displayStatus()); // Alice is an adult

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این مثال، _checkAge روشی است که نباید مستقیماً به آن دسترسی داشت. در داخل برای کمک به تعیین وضعیت کاربر و در عین حال سازماندهی منطقی استفاده می شود.

2. ارث

وراثت به یک کلاس (زیر کلاس) اجازه می دهد تا ویژگی ها و روش ها را از کلاس دیگر (سوپر کلاس) به ارث ببرد. این کار استفاده مجدد از کد و ایجاد سلسله مراتب کلاس را آسان تر می کند.

مثال:

class Animal {
constructor(name) {
this.name = name;
}

makeSound() {
return `${this.name} makes a sound.`;
}
}

class Dog extends Animal {
makeSound() {
return `${this.name} barks.`;
}
}

class Cat extends Animal {
makeSound() {
return `${this.name} meows.`;
}
}

const myDog = new Dog(‘Rex’);
const myCat = new Cat(‘Mia’);

console.log(myDog.makeSound()); // Rex barks.
console.log(myCat.makeSound()); // Mia meows.

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اینجا، هر دو Dog و Cat ارث بردن از Animal. هر کدام صدای خود را پیاده سازی می کند و نشان می دهد که چگونه وراثت اجازه می دهد تا رفتارهای سفارشی شده را بدون تکرار کد انجام دهد.

3. چند شکلی

چند شکلی توانایی اشیاء مختلف برای پاسخ دادن به یک روش به روش های مختلف است. این به روش هایی با نام یکسان اجازه می دهد تا بسته به نوع شی، رفتارهای متفاوتی داشته باشند.

مثال:

class Shape {
area() {
return 0;
}
}

class Rectangle extends Shape {
constructor(width, height) {
super();
this.width = width;
this.height = height;
}

area() {
return this.width * this.height;
}
}

class Circle extends Shape {
constructor(radius) {
super();
this.radius = radius;
}

area() {
return Math.PI * Math.pow(this.radius, 2);
}
}

const shapes = [new Rectangle(10, 5), new Circle(3)];

shapes.forEach(shape => {
console.log(`Area: ${shape.area()}`);
});

// Output:
// Area: 50
// Area: 28.274333882308138

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این مورد، هر دو Rectangle و Circle خود را دارند area روش‌ها، اما فراخوانی یک روش نتایج متفاوتی بر اساس نوع شکل به دست می‌دهد. این چند شکلی در عمل است!

4. انتزاع

انتزاع فرآیند پنهان کردن جزئیات پیچیده و افشای تنها آنچه ضروری است است. در OOP، این به شما امکان می دهد از اشیا بدون نیاز به درک همه پیچیدگی های نحوه کار آنها استفاده کنید.

مثال:

class Car {
constructor(brand, model) {
this.brand = brand;
this.model = model;
}

start() {
console.log(‘Car started.’);
}

stop() {
console.log(‘Car stopped.’);
}
}

class ElectricCar extends Car {
charge() {
console.log(‘Electric car charging.’);
}
}

const myElectricCar = new ElectricCar(‘Tesla’, ‘Model 3’);
myElectricCar.start(); // Car started.
myElectricCar.charge(); // Electric car charging.

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اینجا، Car کلاس متدهای اساسی را ارائه می دهد، در حالی که ElectricCar قابلیت شارژ را اضافه می کند. می‌توانید بدون اینکه بدانید هر قطعه چگونه کار می‌کند از ماشین استفاده کنید — فقط باید بدانید که چگونه آن را روشن و شارژ کنید.

نتیجه گیری

و شما آن را دارید! اکنون درک واضح تری از چهار ستون برنامه نویسی شی گرا دارید: کپسوله سازی، وراثت، چندشکلی و انتزاع. این مفاهیم برای نوشتن کدهای سازمان یافته تر و قابل نگهداری ضروری هستند.

به تمرین و به کارگیری این اصول در پروژه های خود ادامه دهید و به خوبی برای مقابله با چالش ها در مصاحبه ها و کارهای روزمره خود به عنوان یک توسعه دهنده آماده خواهید شد!

هی توسعه دهنده! امروز قصد داریم در مورد برنامه نویسی شی گرا (OOP) صحبت کنیم. این پارادایم برای سازماندهی داده ها و رفتارها با استفاده از «اشیاء» ضروری است. اگر برای مصاحبه شغلی آماده می شوید، تسلط بر این مفاهیم می تواند تفاوت را ایجاد کند.

ما چهار ستون OOP را به روشی واضح و عملی با مثال هایی که به شما کمک می کند همه چیز را به راحتی درک کنید، بررسی خواهیم کرد.

برنامه نویسی شی گرا چیست؟

OOP بر چهار ستون اصلی استوار است:

  1. کپسولاسیون
  2. ارث
  3. چند شکلی
  4. انتزاع

بیایید با مثال هایی در جاوا اسکریپت به هر یک از این ستون ها نگاه دقیق تری بیندازیم.

1. کپسولاسیون

کپسولاسیون مانند نگهداری وسایل شما در یک جعبه است. شما هر چیزی را که نیاز دارید داخل آن قرار می دهید و کنترل می کنید که چه کسی می تواند به آن دسترسی داشته باشد. این به محافظت از داده های ذخیره شده کمک می کند و تضمین می کند که وضعیت داخلی شیء ایمن باقی می ماند.

مثال:

class User {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    // Public method
    displayInfo() {
        return `${this.name}, ${this.age} years old`;
    }

    // Private method
    _checkAge() {
        return this.age >= 18 ? 'an adult' : 'a minor';
    }

    displayStatus() {
        return `${this.name} is ${this._checkAge()}.`;
    }
}

const user = new User('Alice', 22);
console.log(user.displayInfo()); // Alice, 22 years old
console.log(user.displayStatus()); // Alice is an adult
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این مثال، _checkAge روشی است که نباید مستقیماً به آن دسترسی داشت. در داخل برای کمک به تعیین وضعیت کاربر و در عین حال سازماندهی منطقی استفاده می شود.

2. ارث

وراثت به یک کلاس (زیر کلاس) اجازه می دهد تا ویژگی ها و روش ها را از کلاس دیگر (سوپر کلاس) به ارث ببرد. این کار استفاده مجدد از کد و ایجاد سلسله مراتب کلاس را آسان تر می کند.

مثال:

class Animal {
    constructor(name) {
        this.name = name;
    }

    makeSound() {
        return `${this.name} makes a sound.`;
    }
}

class Dog extends Animal {
    makeSound() {
        return `${this.name} barks.`;
    }
}

class Cat extends Animal {
    makeSound() {
        return `${this.name} meows.`;
    }
}

const myDog = new Dog('Rex');
const myCat = new Cat('Mia');

console.log(myDog.makeSound()); // Rex barks.
console.log(myCat.makeSound()); // Mia meows.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اینجا، هر دو Dog و Cat ارث بردن از Animal. هر کدام صدای خود را پیاده سازی می کند و نشان می دهد که چگونه وراثت اجازه می دهد تا رفتارهای سفارشی شده را بدون تکرار کد انجام دهد.

3. چند شکلی

چند شکلی توانایی اشیاء مختلف برای پاسخ دادن به یک روش به روش های مختلف است. این به روش هایی با نام یکسان اجازه می دهد تا بسته به نوع شی، رفتارهای متفاوتی داشته باشند.

مثال:

class Shape {
    area() {
        return 0;
    }
}

class Rectangle extends Shape {
    constructor(width, height) {
        super();
        this.width = width;
        this.height = height;
    }

    area() {
        return this.width * this.height;
    }
}

class Circle extends Shape {
    constructor(radius) {
        super();
        this.radius = radius;
    }

    area() {
        return Math.PI * Math.pow(this.radius, 2);
    }
}

const shapes = [new Rectangle(10, 5), new Circle(3)];

shapes.forEach(shape => {
    console.log(`Area: ${shape.area()}`);
});

// Output:
// Area: 50
// Area: 28.274333882308138
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این مورد، هر دو Rectangle و Circle خود را دارند area روش‌ها، اما فراخوانی یک روش نتایج متفاوتی بر اساس نوع شکل به دست می‌دهد. این چند شکلی در عمل است!

4. انتزاع

انتزاع فرآیند پنهان کردن جزئیات پیچیده و افشای تنها آنچه ضروری است است. در OOP، این به شما امکان می دهد از اشیا بدون نیاز به درک همه پیچیدگی های نحوه کار آنها استفاده کنید.

مثال:

class Car {
    constructor(brand, model) {
        this.brand = brand;
        this.model = model;
    }

    start() {
        console.log('Car started.');
    }

    stop() {
        console.log('Car stopped.');
    }
}

class ElectricCar extends Car {
    charge() {
        console.log('Electric car charging.');
    }
}

const myElectricCar = new ElectricCar('Tesla', 'Model 3');
myElectricCar.start(); // Car started.
myElectricCar.charge(); // Electric car charging.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اینجا، Car کلاس متدهای اساسی را ارائه می دهد، در حالی که ElectricCar قابلیت شارژ را اضافه می کند. می‌توانید بدون اینکه بدانید هر قطعه چگونه کار می‌کند از ماشین استفاده کنید — فقط باید بدانید که چگونه آن را روشن و شارژ کنید.

نتیجه گیری

و شما آن را دارید! اکنون درک واضح تری از چهار ستون برنامه نویسی شی گرا دارید: کپسوله سازی، وراثت، چندشکلی و انتزاع. این مفاهیم برای نوشتن کدهای سازمان یافته تر و قابل نگهداری ضروری هستند.

به تمرین و به کارگیری این اصول در پروژه های خود ادامه دهید و به خوبی برای مقابله با چالش ها در مصاحبه ها و کارهای روزمره خود به عنوان یک توسعه دهنده آماده خواهید شد!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا