Abstraction
هر ساله ماشین ها از نظر فنی کلی تغییر می کنن اما شخصی که با یک ماشین چند سال پیش رانندگی کرده باشه با ماشین الانم میتونه رانندگی کنه. اینجاست که abstraction باعث میشه این اتفاق بیوفته.
اومدن بصورت انتزاعی تعریف کردن که ماشین دنده داره، پدال گاز داره و فرمون داره و هر کدومشون به چه صورت عمل می کنن.
به همین دلیل با اینکه از نظر فنی و داخلی کلی تغییر میکنن اما طرز استفاده ازش تغییر خاصی نمیکنه.
بیاید یه مثال دیگه بزنیم:
فرض کنید شما یک وب سایت طراحی کردید. یه سری دکمه ها و قابلیت ها قرار دادید تا کاربر بتونه ازش استفاده کنه.
با اینکه سبد خرید برای کاربر همونه اما پشت صحنه کلی تغییر دادید و بروزرسانیش کردید.
همچنین شما هم برای طراحی وب سایت از یک سری ابزار ها استفاده کردید که این ابزار ها همش در حال بروز رسانی هستند اما نحوه استفاده شما تغییری نمیکنه.
به این مفهوم Abstraction میگن.
#OOP #Abstraction
@Syntax_fa
هر ساله ماشین ها از نظر فنی کلی تغییر می کنن اما شخصی که با یک ماشین چند سال پیش رانندگی کرده باشه با ماشین الانم میتونه رانندگی کنه. اینجاست که abstraction باعث میشه این اتفاق بیوفته.
اومدن بصورت انتزاعی تعریف کردن که ماشین دنده داره، پدال گاز داره و فرمون داره و هر کدومشون به چه صورت عمل می کنن.
به همین دلیل با اینکه از نظر فنی و داخلی کلی تغییر میکنن اما طرز استفاده ازش تغییر خاصی نمیکنه.
بیاید یه مثال دیگه بزنیم:
فرض کنید شما یک وب سایت طراحی کردید. یه سری دکمه ها و قابلیت ها قرار دادید تا کاربر بتونه ازش استفاده کنه.
با اینکه سبد خرید برای کاربر همونه اما پشت صحنه کلی تغییر دادید و بروزرسانیش کردید.
همچنین شما هم برای طراحی وب سایت از یک سری ابزار ها استفاده کردید که این ابزار ها همش در حال بروز رسانی هستند اما نحوه استفاده شما تغییری نمیکنه.
به این مفهوم Abstraction میگن.
#OOP #Abstraction
@Syntax_fa
👍16👌4
مینی دوره آموزش پیشرفته جنگو
معرفی دوره:
https://youtu.be/bZacX-b_qtA?si=B8HEaettjHDQCrMZ
#Django
@Syntax_fa
معرفی دوره:
https://youtu.be/bZacX-b_qtA?si=B8HEaettjHDQCrMZ
#Django
@Syntax_fa
🔥9👍5
مینی دوره آموزش پیشرفته جنگو
Interface:
https://youtu.be/KtQJUxKgcKA?si=965LNES0lc5y2hSL
#Django
@Syntax_fa
Interface:
https://youtu.be/KtQJUxKgcKA?si=965LNES0lc5y2hSL
#Django
@Syntax_fa
🔥4👍2
مینی دوره آموزش پیشرفته جنگو
پیاده سازی logging interface:
https://youtu.be/5FQG_qKlvwA?si=9zwVNWyCZwxUE7SS
#Django
@Syntax_fa
پیاده سازی logging interface:
https://youtu.be/5FQG_qKlvwA?si=9zwVNWyCZwxUE7SS
#Django
@Syntax_fa
🔥4👍2
این بازی آنلاین جالب رو انجام بدید:
https://hamed.github.io/trust/
این بازی بر مبنای نظریه بازیها طراحی شده،
ببینید اگر در واقعیت اعتماد تکامل پیدا کنه، جامعه چجوری رشد میکنه...!
بهترین خروجی چیه؟
و اگه رو به خوبی و درستی و اعتماد پیش بریم، چه رفتارهایی در بلندمدت از بین میرن...
@Code_Crafters
#game
@Syntax_fa
https://hamed.github.io/trust/
این بازی بر مبنای نظریه بازیها طراحی شده،
ببینید اگر در واقعیت اعتماد تکامل پیدا کنه، جامعه چجوری رشد میکنه...!
بهترین خروجی چیه؟
و اگه رو به خوبی و درستی و اعتماد پیش بریم، چه رفتارهایی در بلندمدت از بین میرن...
@Code_Crafters
#game
@Syntax_fa
hamed.github.io
تکامل اعتماد
یک راهنمای تعاملی برای نظریه بازی درباره اینکه چرا به یکدیگر اعتماد میکنیم
👍13🌚1
Syntax | سینتکس
این بازی آنلاین جالب رو انجام بدید: https://hamed.github.io/trust/ این بازی بر مبنای نظریه بازیها طراحی شده، ببینید اگر در واقعیت اعتماد تکامل پیدا کنه، جامعه چجوری رشد میکنه...! بهترین خروجی چیه؟ و اگه رو به خوبی و درستی و اعتماد پیش بریم، چه رفتارهایی در…
این گیم رو هم یکی از اعضا معرفی کرد. برای یادگیری ترمینال لینوکس مفیده
https://web.mit.edu/mprat/Public/web/Terminus/Web/main.html
#Game
@Syntax_fa
https://web.mit.edu/mprat/Public/web/Terminus/Web/main.html
#Game
@Syntax_fa
web.mit.edu
Terminus
🔥4👍2
مینی دوره آموزش پیشرفته جنگو
اضافه کردن seq datalust به پروژه:
https://youtu.be/TyWzBpOcNlY
#Django
@Syntax_fa
اضافه کردن seq datalust به پروژه:
https://youtu.be/TyWzBpOcNlY
#Django
@Syntax_fa
🔥6👍1
😁14👍1
Dependency Inversion
در پست های قبل درباره یکی از اصول solid به اسم Open / Close توضیح دادیم.
در این پست به یکی دیگر از اصول solid یعنی Dependency Inversion می پریدازیم.
High level modules should not depend on low-level modules. Both should depend on abstractions.
ماژول های سطح بالا نباید به ماژول های سطح پایین وابسته باشند. بلکه هر دو باید به یک abstraction وابسه باشند(درباره abstraction چند پست بالاتر توضیح دادم)
بیاید یک مثال بزنیم. سرویس اکانت برای اینکه بتونه otp code رو ارسال کنه به سرویس sms وابسته است و نمیتواند بدون سرویس sms کار کند و ما هم نمیتوانیم این وابستگی را حذف کنیم. پس راه حل چیست؟
کاری که ما می کنیم این است اکانت رو بصورت مستقیم به سرویس sms وصل نمیکنیم بجاش از یک abstraction و قرارداد استفاده میکنیم. برای مثال میگیم سرویس اس ام اس یک متد به اسم send_sms داره که متن پیام و شماره موبایل رو میگیره و در نهایت فلان چیز رو به عنوان خروجی برمیگردونه.
از اون طرف سرویس اس ام اس هم باید قوانین abstraction رو پیاده سازی بکنه و این abstract ما هست که وسط این دو سرویس قرار میگیره.
در این صورت خیلی ساده می تونیم سرویسمون رو جایگزین کنیم.
حتی برای تست میتونیم یک سرویس به اسم dummy sms service بنویسم تا به راحتی تست هایمان را انجام دهیم و از همه مهم تر یک طراحی ماژولار داریم.
با اینکار ما اومدیم Dependency رو Inversion کردیم.
این یکی از مهم ترین اصول مهندسی نرم افزار است.
همچنین در دوره آموزش پیشرفته جنگو درباره interface توضیح داده شده است و در قسمت های بعدی برای استفاده از سرویس logger از این روش استفاده می کنیم.
#Dependency_inversion #Solid
@Syntax_fa
در پست های قبل درباره یکی از اصول solid به اسم Open / Close توضیح دادیم.
در این پست به یکی دیگر از اصول solid یعنی Dependency Inversion می پریدازیم.
High level modules should not depend on low-level modules. Both should depend on abstractions.
ماژول های سطح بالا نباید به ماژول های سطح پایین وابسته باشند. بلکه هر دو باید به یک abstraction وابسه باشند(درباره abstraction چند پست بالاتر توضیح دادم)
بیاید یک مثال بزنیم. سرویس اکانت برای اینکه بتونه otp code رو ارسال کنه به سرویس sms وابسته است و نمیتواند بدون سرویس sms کار کند و ما هم نمیتوانیم این وابستگی را حذف کنیم. پس راه حل چیست؟
کاری که ما می کنیم این است اکانت رو بصورت مستقیم به سرویس sms وصل نمیکنیم بجاش از یک abstraction و قرارداد استفاده میکنیم. برای مثال میگیم سرویس اس ام اس یک متد به اسم send_sms داره که متن پیام و شماره موبایل رو میگیره و در نهایت فلان چیز رو به عنوان خروجی برمیگردونه.
از اون طرف سرویس اس ام اس هم باید قوانین abstraction رو پیاده سازی بکنه و این abstract ما هست که وسط این دو سرویس قرار میگیره.
در این صورت خیلی ساده می تونیم سرویسمون رو جایگزین کنیم.
حتی برای تست میتونیم یک سرویس به اسم dummy sms service بنویسم تا به راحتی تست هایمان را انجام دهیم و از همه مهم تر یک طراحی ماژولار داریم.
با اینکار ما اومدیم Dependency رو Inversion کردیم.
این یکی از مهم ترین اصول مهندسی نرم افزار است.
همچنین در دوره آموزش پیشرفته جنگو درباره interface توضیح داده شده است و در قسمت های بعدی برای استفاده از سرویس logger از این روش استفاده می کنیم.
#Dependency_inversion #Solid
@Syntax_fa
👍11