چرا از شی گرایی استفاده کنیم؟
بعد از خوندن این چند خط اگه ایده ای دارید برام کامنت کنید لطفا ❤️
دارم یه دوره برنامه نویسی از پایه می سازم برای مبتدی ها. به فانکشن رسیدم و توی قسمت ۲۲ قراره شی گرایی (مقدماتی) رو شروع کنم.
یادمه سال 85 اولین بار داشتم شی گرایی رو توی سی++ میخوندم. اما حداقل 10 سال طول کشید یکم متوجه بشم داستان چیه 🥸
چرا؟
چون همه آموزش ها شروع میکنن که کلاس تایپ جدید است مثل String که خودمان میسازیم. متد دارد . اشیا را در نظر بگیرید. چند ریختی و وراثت این است کپسوله سازی و… اون سالها واقعا نمیتونستم دلیلش رو متوجه بشم. شاید هنوز هم متوجه نشدم!!!
✔️ حالا اگه بخواهیم به یه نفر توضیح بدیم که چرا از شی گرایی استفاده کنیم باید چطور شروع کنیم؟
توی اینترنت تقریبا همه برنامه نویسی ساخت یافته رو با شی گرا مقایسه کردن. اما این جواب نیست.
خب اولین سوالش قاعدتا اینه که با ساخت یافته که خیلی راحت ترم. چرا شی گرایی؟
این فعلا بهترین جوابی هست که تونستم پیدا کنم:
https://qr.ae/pv57pO
جواب هایی که دوستان باتجربه به این سوال من دادن (تشکر از همه):
▪️ اگر قرار باشه پروسیجرال همه چیرو بریم جلو مثل این میشه که یه نفر باشه داخل سازمان املاک یا هر سازمانی تمامی وظایف رو از صفر تا صد انجام بده، وقتی وظایف یکی دوتا باشه خیلی عالی انجام میشه ولی وقتی داخل اون سازمان بیش از صد وظیفه باشه اون شخص قادر نخواهد بود انجام بده و اشتباه خواهد کرد و کارهام عقب خواهد ماند بخاطر این افراد متفاوت رو میاریم و برای هرکدام وظیفه مخصوص خودش رو میدیم و میگیم تو فقط کار اینه و اینجوری وقتی سازمان بزرگ میشه مشکل سرعت و اشتباهات از بین میره به شرطی که چارت سازمانی رو درست تحلیل کنیم
▪️کاری که زبان پروسیجرال میکنه از اول برنامه تا اون آخرش یه نفر کارو به دست میگیره و معمولا هم با یک هسته ی CPU کار میکنه و بیش از اون رو ساپورت نمیکنه مثل زبان C قدیم.
یعنی وقتی یک هسته cpu فقط بخواد کار رو انجام بده خوب نمیتونه به همه ی کار ها برسه.
البته این جواب توی زبان های برنامه نویسی جدید یکم نقص داره
من با گو کار کردم و به نظرم زبان های برنامه نویسی که مفموم های شی گرایی نداشته باشند واقعا در پروژه های بزرگ بشدت غیر قابل خواندن میشوند و توسعه ی اون ها خیلی خیلی سخت میشه.
برای همین مثلا از همین زبان گو برای درست کردن کار های تک وظیفه ای استفاده میشه. مثلاً در ساختن ماکرو سرویس های یک پروژه بزرگ.
▪️به نظرم جوابش فقط و فقط یه چیز است. سرعت در توسعه و تغییر کد است. مخصوصا توی کد های بسیار زیاد
برای همین این تنها جواب درستی که میشه داد.
شعی گرایی رو ما انسان ها راحت تر میتونیم درک کنیم.
وقتی کد بسیار بزرگ میشه ، تحلیل کد بسیار کار مشکلی میشه. شیی گرایی به کمک ما میان تا کد رو راحت تر درک کنیم و توسعه اون برامون راحت تر بشه
خود کدش سریع تر نیست اصلا ولی توسعه اش بسیار سریع تر میشه.
بخوام خارجی جواب بدم اینه:
برای داشتنscalbility و Readability در برنامه نویسی از شی گرایی استفاده میکنیم
▪️اگه میخوای به یه نو آموز این رو بفهمونی یه مثل مثل این بزن
ما یه شرکت داریم که کارش تولید صندلی ها م مبل هستش. این شرکت اگه بخواد سریع تر چندتا محصول رو بسازه باید سعی کنه کاری کنه که یه سری دسته بندی ها توی تولیدش تکراری باشه. مثلاً همه از یه جور پایه استفاده کنند و فقط با یه تغییر خیلی کوچک در پایه مبل بتونه یه طرح دیگه بزنه. یا طرح های رو جوری بسازه که بتونه هم مبل دو نفره بسازه و هم مبل چهار نفره و هم مبل و نفره.
این کار فقط و فقط ازکاری شبیه به برنامه نویسی شی گرایی بر میاد.
و اگه بخواد اون رو با کاری شبیه به پروسیجرال انجام بده هر دفعه برای هر مبل باید زمان زیادی صرف کنه تا اون مبل ساخته بشه.
برنامه نویسی پروسیجرال مثل یه نجار میمونه که هر دفعه میخواد مقل بسازه باید چکش و آره به دست بگیره و خودش تک و تنها از یه چوب خالی یه مبل زیبا رو بسازه و هر دفعه زمان زیادی رو باید بزارن برای هر مبل
برنامه نویسی شی گرایی به ما امکان میده که در زمان توسعه صرفه جویی کنیم و با یه سری تغییر کوچیک یه کار کاملا متفاوت بسازیم