متن خبر

راهنمای اصول برنامه نویسی شی گرا

راهنمای اصول برنامه نویسی شی گرا

شناسهٔ خبر: 570277 -




یک زبان برنامه نویسی به طور کلی بر اساس پشتیبانی آن از یک یا چند پارادایم طبقه بندی می شود.

برنامه نویسی شی گرا یکی از این پارادایم هاست که در آن کد به صورت اشیا سازماندهی می شود.

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

با استفاده از برنامه نویسی شی گرا می توانید نرم افزار ماژولار و مقیاس پذیر بسازید که نگهداری آن آسان باشد.

در این مقاله با اصول برنامه نویسی شی گرا آشنا می شوید که پایه و اساس ساخت سیستم های قوی را می گذارد.

ما از جاوا به عنوان زبان برنامه نویسی برای مثال های ارائه شده در زیر استفاده خواهیم کرد.

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

برنامه نویسی شی گرا یک روش برنامه نویسی است که موجودیت های دنیای واقعی را در قالب اشیا مدل می کند.

این اشیاء نمونه هایی از کلاس ها هستند.

یک کلاس را می توان به عنوان یک طرح اولیه در نظر گرفت و هر کلاس می تواند شامل فیلدهایی باشد که ویژگی های شی را تعریف می کند و متدهایی که رفتار شی را توصیف می کنند. هر کلاس را می توان به طور مستقل توسعه، آزمایش و اشکال زدایی کرد.

اکنون که تعریف اولیه برنامه نویسی شی گرا را درک کرده اید، اجازه دهید مستقیما وارد آن شویم و با اصول اصلی آن آشنا شویم.

چهار اصل یا ستون اصلی در الگوی برنامه نویسی شی گرا وجود دارد. آن ها هستند:

انتزاع - مفهوم - برداشت

کپسوله سازی

وراثت

پلی مورفیسم

منظورشون چیه؟ اجازه دهید با یک توضیح ساده و به دنبال آن یک مثال برای هر یک از آنها در بخش های بعدی بیشتر تحلیل کنیم.

انتزاع چیست؟

انتزاع به عنوان مفهوم پنهان کردن جزئیات پیاده سازی و افشای تنها عملکردهای ضروری شی به کاربر تعریف می شود.

کلمات کلیدی که باید در اینجا به خاطر بسپارید عبارتند از: "پنهان سازی پیاده سازی".

انتزاع در جاوا را می توان از طریق کلاس های Interfaces و Abstract بدست آورد.

 abstract class Animal { public abstract void makeSomeNoise(); } class Dog extends Animal { public void makeSomeNoise() { System.out.println("Bark"); } } public class Main { public static void main(String[] args) { Dog myDog = new Dog(); myDog.makeSomeNoise(); // Output - Bark } }
مثالی برای انتزاع

در مثال بالا، انتزاع با کمک یک کلاس انتزاعی به نام Animal به دست می آید.

در اینجا، تنها عملکرد ضروری کلاس از طریق متد makeSomeNoise() در معرض دید قرار می گیرد.

جزئیات پیاده سازی در کلاس انتزاعی پنهان شده است و فقط در کلاس بتن Dog ارائه می شود که کلاس Animal را گسترش می دهد.

توجه داشته باشید که در حین بحث در مورد وراثت، در مورد کلمه کلیدی extends اطلاعات بیشتری کسب خواهید کرد.

کپسولاسیون چیست؟

کپسوله سازی به مفهوم کپسوله کردن یا جمع کردن متغیرهای عضو (داده ها) و روش ها (رفتار) یک شی در یک واحد واحد، مانند یک کلاس، اشاره دارد.

اطلاعات داخلی شی پنهان می شود تا بتوانیم از تغییرات ناخواسته جلوگیری کنیم و فقط دسترسی کنترل شده را مجاز کنیم. کلمات کلیدی که باید در اینجا به خاطر بسپارید عبارتند از: "مخفی کردن اطلاعات".

کپسوله سازی در جاوا از طریق اصلاح کننده های دسترسی به دست می آید. فیلدها را به‌عنوان private علامت‌گذاری می‌کنیم و از طریق روش‌های عمومی تنظیم‌کننده و دریافت‌کننده در دسترس قرار می‌دهیم.

 public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void display() { System.out.println("Name: " + name + ", Age: " + age); } } public class Main { public static void main(String[] args) { Person person = new Person("Raj", 30); person.display(); // Output - Name: Raj, Age: 30 person.setName("Kumar"); person.setAge(25); person.display(); // Output - Name: Kumar, Age: 25 } }
مثال برای کپسولاسیون

در مثال بالا، فیلدها و متدها در کلاسی به نام Person کپسوله می شوند.

شما name و age فیلدها را به عنوان private اعلام می کنید و متدهای عمومی تنظیم کننده و دریافت کننده getName() ، setName() ، getAge() و setAge() برای تغییر مقادیر در صورت نیاز ارائه می دهید.

ارث چیست؟

وراثت یک رابطه سلسله مراتبی بین دو کلاس برقرار می کند.

در این مفهوم، یک کلاس فیلدها (ویژگی ها) و متدها (رفتار) کلاس دیگر را به ارث می برد، در حالی که ویژگی ها و رفتار خود را دارد.

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

در جاوا، وراثت با استفاده از کلمه کلیدی extends به دست می آید.

 class Animal { public void makeSomeNoise(){ System.out.println("Make some animal noise"); } } class Dog extends Animal { public void makeSomeNoise() { System.out.println("Bark"); } public void doSomething(){ System.out.println("Play with ball"); } } public class Main { public static void main(String[] args) { Dog myDog = new Dog(); myDog.makeSomeNoise(); // Output - Bark myDog.doSomething(); // Output - Play with ball } }
مثال برای ارث

در مثال بالا، کلمه کلیدی extends نشان می دهد که کلاس Dog زیر کلاس کلاس Animal است.

کلاس Dog متد makeSomeNoise() از کلاس Animal به ارث می برد. این به کلاس Dog اجازه می دهد تا از روش استفاده مجدد کند و پیاده سازی خود را بدون نیاز به بازنویسی کامل آن ارائه دهد.

همچنین می توانید توجه داشته باشید که کلاس Dog رفتار خاص خود را از طریق متد doSomething() دارد.

وراثت یک رابطه "IS-A" را بین دو کلاس تعریف می کند. در مثال ما، سگ IS-A Animal است.

توجه داشته باشید که جاوا از وراثت چند سطحی پشتیبانی می کند. به عنوان مثال، class Labrador از class Dog ارث می برد، که به نوبه خود از class Animal ارث می برد. با این حال، از وراثت چندگانه پشتیبانی نمی کند. یعنی یک کلاس مجاز به ارث بردن از دو یا چند کلاس والد نیست.

پلی مورفیسم چیست؟

پلی (بسیاری)، مورف (شکل).

چند شکلی توانایی یک شی را برای نمایش در اشکال مختلف تعریف می کند.

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

چند شکلی زمان کامپایل از طریق اضافه بار روش به دست می آید - چندین روش نام یکسان دارند اما نوع یا تعداد پارامترهای متفاوتی دارند.

 class MathOperation { public int add(int a, int b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; } } public class Main { public static void main(String[] args) { MathOperation math = new MathOperation(); System.out.println(math.add(95, 5)); // Output - 100 System.out.println(math.add(75, 5, 20)); // Output - 100 } }
مثالی برای چندشکلی زمان کامپایل از طریق اضافه بار روش

در مثال بالا، ما متد add() بارگذاری کرده ایم. دو روش با add یک نام وجود دارد اما تعداد پارامترهای آنها متفاوت است.

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

چندشکلی زمان اجرا از طریق نادیده گرفتن روش به دست می آید - یک زیر کلاس دارای روشی با همان نام و مجموعه ای از پارامترهای مشابه روش سوپرکلاس خود است. با این حال، اجرای خود را از روش فراهم می کند.

در اینجا، وضوح روش در زمان اجرا اتفاق می افتد.

 class Animal { public void makeSomeNoise() { System.out.println("Make some animal noise"); } } class Dog extends Animal { @Override public void makeSomeNoise() { System.out.println("Barks"); } } class Cat extends Animal { @Override public void makeSomeNoise() { System.out.println("Meows"); } } public class Main { public static void main(String[] args) { Animal myAnimal; myAnimal = new Dog(); myAnimal.makeSomeNoise(); // Output - Barks myAnimal = new Cat(); myAnimal.makeSomeNoise(); // Output - Meows } }
مثالی برای چندشکلی زمان اجرا از طریق رد کردن روش

در مثال بالا، متد makeSomeNoise() از کلاس Animal توسط زیر کلاس‌های Dog و Cat لغو شده است و آنها پیاده‌سازی خود را از این متد ارائه می‌کنند.

در طول ایجاد شی، متغیر Animal یک شی Dog یا Cat را نگه می‌دارد و زمانی که متد makeSomeNoise() فراخوانی می‌شود، متد overridd مناسب بر اساس نوع شی واقعی فراخوانی می‌شود.

نتیجه

در این مقاله، اصول اساسی برنامه نویسی شی گرا (OOP) را تحلیل کردیم.

آشنایی با این مفاهیم برای ساختن سیستم های نرم افزاری قوی، قابل نگهداری و مقیاس پذیر بسیار مهم است.

خبرکاو

ارسال نظر




تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است