⭕️تا قبل از دارت ۳ برای اینکه یه کلاس خارج از library خودش قابلیت ارث بری نداشته باشه و فقط به عنوان اینترفیس بشه ازش استفاده کرد، کانستراکتور کلاس رو private میکردیم.
🟢چون subclass ها حتمن باید یکی از کانستراکتور های super class خودشون رو کال کنن، وقتی کانستراکتور های super class به حالت private در میومدن، عملن خارج از library خودش امکان extend کردن وجود نداشت و فقط باید به عنوان یه اینترفیس بهش نگاه میکردیم و implement اش میکردیم.
🟢پس با تعریف یه abstract class و همچنین private کردن کانستراکتورش عملن برای خارج نشینان یه اینترفیس میساختیم.
⭕️توی دارت ۳...
🟢 برای اینکه قابلیت ارث بری رو خارج از library از یه کلاس بگیریم از interface class استفاده میکنیم.
🟢همچنین برای اینکه بتونیم داخل کلاس متد های abstract داشته باشیم هم از abstract class استفاده میکنیم (مثل قبل و بدون تفاوت)
🟢کلاس های abstract توسط بیگانگان هم میتونن extend بشن و هم implement.
🟢نوع Interface class نمیتونن متدهای abstract داشته باشن.
🟢با ترکیب interface و abstract یعنی
abstract interface class
میتونیم کلاس هایی با متد های abstract داشته باشیم که در خارج library امکان extend شدن نداره و فقط میشه implement اش کرد.
@purecoder_ir
🟢چون subclass ها حتمن باید یکی از کانستراکتور های super class خودشون رو کال کنن، وقتی کانستراکتور های super class به حالت private در میومدن، عملن خارج از library خودش امکان extend کردن وجود نداشت و فقط باید به عنوان یه اینترفیس بهش نگاه میکردیم و implement اش میکردیم.
🟢پس با تعریف یه abstract class و همچنین private کردن کانستراکتورش عملن برای خارج نشینان یه اینترفیس میساختیم.
⭕️توی دارت ۳...
🟢 برای اینکه قابلیت ارث بری رو خارج از library از یه کلاس بگیریم از interface class استفاده میکنیم.
🟢همچنین برای اینکه بتونیم داخل کلاس متد های abstract داشته باشیم هم از abstract class استفاده میکنیم (مثل قبل و بدون تفاوت)
🟢کلاس های abstract توسط بیگانگان هم میتونن extend بشن و هم implement.
🟢نوع Interface class نمیتونن متدهای abstract داشته باشن.
🟢با ترکیب interface و abstract یعنی
abstract interface class
میتونیم کلاس هایی با متد های abstract داشته باشیم که در خارج library امکان extend شدن نداره و فقط میشه implement اش کرد.
@purecoder_ir
💥تخفیف 36 درصدی به مدت 6 روز💥
😍دوره ی Object Oriented Design رو میتونید تا 6 روز اینده با تخفیف 36 درصدی تهیه کنید.
✅مفاهیم Object Oriented
✅اصول SOLID
✅مفاهیم معماری Clean
⭕️لینک دوره در سایت:
https://purecoder.ir/course/object-oriented-design-part-one/
⭕️دوره تا فصل 9 تکمیل شده و 1 فصل از دوره باقی مونده.
⭕️برای ثبت نام در دوره یا مشاوره در مورد دوره به ایدی زیر پیام بدید:
@PureCoder_support
💥💥💥💥💥💥💥💥💥
@purecoder_ir
😍دوره ی Object Oriented Design رو میتونید تا 6 روز اینده با تخفیف 36 درصدی تهیه کنید.
✅مفاهیم Object Oriented
✅اصول SOLID
✅مفاهیم معماری Clean
⭕️لینک دوره در سایت:
https://purecoder.ir/course/object-oriented-design-part-one/
⭕️دوره تا فصل 9 تکمیل شده و 1 فصل از دوره باقی مونده.
⭕️برای ثبت نام در دوره یا مشاوره در مورد دوره به ایدی زیر پیام بدید:
@PureCoder_support
💥💥💥💥💥💥💥💥💥
@purecoder_ir
🔥Dart 3
🔥Records
⭕️یکی از اپدیت های جدید و البته خوب دارت توی ورژن ۳ Record ها هستن.
Records are an anonymous, immutable, aggregate type. Like other collection types, they let you bundle multiple objects into a single object. Unlike other collection types, records are fixed-sized, heterogeneous, and typed.
⭕️توی این تعریف داره ویژگی های Record ها رو بیان میکنه :
✅Immutable type
✅Aggregate type
✅Anonymous type
⭕️پس با یه Aggregation (مثل لیست ها یا...) طرف هستیم.
ولی.....
⭕️از تفاوت هاشون با کالکشن ها (مثل لیست ها) اینه که
🔥اولن fixed sized هستن
🔥و خیلی خیلی مهمتر اینکه توی کالکشن ها وقتی که چنتا type ناهمگون بریزیم، مثلن توی یه لیست هم int و هم string بریزم... Type safety رو از دست میدیم. برای مثال باید لیست رو اینجوری تعریف کنیم
List<Object> myList
که نتیجش از دست دادن type safety هست.
ولی توی Record ها با وجود داشتن type های مختلف توی یه aggregation در کنار هم , type safety رو از دست نمیدیم.
(String, int) record;
record = ('A string', 123);
@purecoder_ir
🔥Records
⭕️یکی از اپدیت های جدید و البته خوب دارت توی ورژن ۳ Record ها هستن.
Records are an anonymous, immutable, aggregate type. Like other collection types, they let you bundle multiple objects into a single object. Unlike other collection types, records are fixed-sized, heterogeneous, and typed.
⭕️توی این تعریف داره ویژگی های Record ها رو بیان میکنه :
✅Immutable type
✅Aggregate type
✅Anonymous type
⭕️پس با یه Aggregation (مثل لیست ها یا...) طرف هستیم.
ولی.....
⭕️از تفاوت هاشون با کالکشن ها (مثل لیست ها) اینه که
🔥اولن fixed sized هستن
🔥و خیلی خیلی مهمتر اینکه توی کالکشن ها وقتی که چنتا type ناهمگون بریزیم، مثلن توی یه لیست هم int و هم string بریزم... Type safety رو از دست میدیم. برای مثال باید لیست رو اینجوری تعریف کنیم
List<Object> myList
که نتیجش از دست دادن type safety هست.
ولی توی Record ها با وجود داشتن type های مختلف توی یه aggregation در کنار هم , type safety رو از دست نمیدیم.
(String, int) record;
record = ('A string', 123);
@purecoder_ir
🔥Dart 3
🔥Records and Patterns
⭕️از قبل میدونم که توی دارت Method Argument ها میتونن دو حالت داشته باشن :
✅Positioned
✅Named
⭕️حالا Recored ها هم دقیقن شبیه به Method Argument ها میتونن همین دو حالت رو داشته باشن.
🟢توسعه دهندگان دارت ادعا میکنن که این مورد باعث مزیت دارت نسبت به برخی زبان های دیگه مثل سوییفت شده.
🟢اون ها میگن که توی زبان های نام برده با دو مفهوم روبرو هستیم :
✅Tuple
✅Record
که Tuple ها به صورت Positioned هستن و Record ها به صورت Named
🟢حالا دارت با ترکیب این ها با هم منسجم تر از زبان های یاد شده به نظر میرسه...
🔥به کدهای بالا (تصاویر) که با فلگ های Before و After مشخص شدن توجه کن...
🔥یکی از ویژگی هایی که قراره در اینده داشته باشیم رو میتونی توی این کدها ببینی که با معجزه ی Record ها و Pattern Matching در اینده خواهیم داشت.
😍استفاده از if وسط ویجت!!!
قبلن با لیست ها این کارو میکردیم ولی قراره در اینده با Record ها این کارو کنیم 😍
@purecoder_ir
🔥Records and Patterns
⭕️از قبل میدونم که توی دارت Method Argument ها میتونن دو حالت داشته باشن :
✅Positioned
✅Named
⭕️حالا Recored ها هم دقیقن شبیه به Method Argument ها میتونن همین دو حالت رو داشته باشن.
🟢توسعه دهندگان دارت ادعا میکنن که این مورد باعث مزیت دارت نسبت به برخی زبان های دیگه مثل سوییفت شده.
🟢اون ها میگن که توی زبان های نام برده با دو مفهوم روبرو هستیم :
✅Tuple
✅Record
که Tuple ها به صورت Positioned هستن و Record ها به صورت Named
🟢حالا دارت با ترکیب این ها با هم منسجم تر از زبان های یاد شده به نظر میرسه...
🔥به کدهای بالا (تصاویر) که با فلگ های Before و After مشخص شدن توجه کن...
🔥یکی از ویژگی هایی که قراره در اینده داشته باشیم رو میتونی توی این کدها ببینی که با معجزه ی Record ها و Pattern Matching در اینده خواهیم داشت.
😍استفاده از if وسط ویجت!!!
قبلن با لیست ها این کارو میکردیم ولی قراره در اینده با Record ها این کارو کنیم 😍
@purecoder_ir
🔥Dart 3
🔥Class Modifiers
⭕️توی دارت هر library از یک یا چند فایل (.dart) تشکیل شده.
🟢اون فایلی که داری توش کد میزنی رو میگن library
🟢میتونی چند تا فایل رو هم کنار هم بگذاری و همشون با هم یه library واحد رو تشکیل بدن... که برای این کار باید از part و part of استفاده کنی....
⭕️ورژن جدید دارت و class modifier هاش (معمولن) تو رو داخل library خودت محدود نمیکنن.
🟢برای نمونه اگه یه interface class تعریف کردی تا قابلیت extend شدن رو ازش بگیری... همچنان توی library که خود کلاس توش قرار داره میتونی extend اش کنی... ولی خارج از library جلوت رو میگیره و فقط میتونی implement اش کنی...
🟢یا اگه یه base class تعریف کردی... خارج از library دیگه نمیتونی implement اش کنی و فقط باید extend اش کنی.. ولی داخل library که خود کلاس تعریف شده همچنان میتونی هم extend اش کنی و هم implement.
🔥اینکه چرا این این modifier ها داخل library محدودیت ایجاد نمیکنن و فقط خارج library محدودیت ایجاد میکنن، کاملن موجه هست...پس نگین چرا اینجوری شده 😅😅 چون که کاملن با دلیل هست...
🔥اینکه چرا مثل جاوا و سی شارپ یه ضرب یه چیزی به اسم interface معرفی نکردن و باید بگی interface class هم دلیل داره و قابل توجیه هست برای این ورژن...
@purecoder_ir
🔥Class Modifiers
⭕️توی دارت هر library از یک یا چند فایل (.dart) تشکیل شده.
🟢اون فایلی که داری توش کد میزنی رو میگن library
🟢میتونی چند تا فایل رو هم کنار هم بگذاری و همشون با هم یه library واحد رو تشکیل بدن... که برای این کار باید از part و part of استفاده کنی....
⭕️ورژن جدید دارت و class modifier هاش (معمولن) تو رو داخل library خودت محدود نمیکنن.
🟢برای نمونه اگه یه interface class تعریف کردی تا قابلیت extend شدن رو ازش بگیری... همچنان توی library که خود کلاس توش قرار داره میتونی extend اش کنی... ولی خارج از library جلوت رو میگیره و فقط میتونی implement اش کنی...
🟢یا اگه یه base class تعریف کردی... خارج از library دیگه نمیتونی implement اش کنی و فقط باید extend اش کنی.. ولی داخل library که خود کلاس تعریف شده همچنان میتونی هم extend اش کنی و هم implement.
🔥اینکه چرا این این modifier ها داخل library محدودیت ایجاد نمیکنن و فقط خارج library محدودیت ایجاد میکنن، کاملن موجه هست...پس نگین چرا اینجوری شده 😅😅 چون که کاملن با دلیل هست...
🔥اینکه چرا مثل جاوا و سی شارپ یه ضرب یه چیزی به اسم interface معرفی نکردن و باید بگی interface class هم دلیل داره و قابل توجیه هست برای این ورژن...
@purecoder_ir
🔥Pure Talk
🔥میتونید توی گروه زیر عضو بشید و توی topic های مختلف, بحث های تخصصی مورد نظر خودتون رو داشته باشید...
@PureTalk_gp
🔥از جمله ی topic هایی که در حال حاضر ساخته شده Clean Code هست که میتونید بحث های جذابی رو داخلش داشته باشید و یا سوالات و ابهامات خودتون رو بپرسید، از جمله :
✅TDD
✅Refactoring
✅Architecture
✅Design Principles
✅Design Patterns
✅....
@purecoder_ir
🔥میتونید توی گروه زیر عضو بشید و توی topic های مختلف, بحث های تخصصی مورد نظر خودتون رو داشته باشید...
@PureTalk_gp
🔥از جمله ی topic هایی که در حال حاضر ساخته شده Clean Code هست که میتونید بحث های جذابی رو داخلش داشته باشید و یا سوالات و ابهامات خودتون رو بپرسید، از جمله :
✅TDD
✅Refactoring
✅Architecture
✅Design Principles
✅Design Patterns
✅....
@purecoder_ir
🔥نام گذاری متد هایی که bool ریترن میکنن.
💥این متد ها معمولن توی ساختار های شرطی ( if) استفاده میشن، بنابراین بهتره یه جوری نام گذاری بشن که وقتی توی if قرار میگیرن شبیه یه جمله خونده بشن!!!!
💥بنابراین استفاده از is یا has یا حتا s سوم شخص در نام گذاری این مدل متد ها رایجه!!!!
💥نکته ی مهم اینه که تا جایی که امکان دارن قانون شبیه یه جمله خونده شدن، وقتی که توی if قرار میگیرن رو رعایت کنیم...
💥مثال های دیگه با شما....
@purecoder_ir
💥این متد ها معمولن توی ساختار های شرطی ( if) استفاده میشن، بنابراین بهتره یه جوری نام گذاری بشن که وقتی توی if قرار میگیرن شبیه یه جمله خونده بشن!!!!
💥بنابراین استفاده از is یا has یا حتا s سوم شخص در نام گذاری این مدل متد ها رایجه!!!!
if(product.equals(otherProduct))
if(order.contains(product))
if(user.emailIsValid())
if(user.hasValidEmail())
if(user.isAdmin())
if(door.isClosed())
if(door.isAlarming())
💥نکته ی مهم اینه که تا جایی که امکان دارن قانون شبیه یه جمله خونده شدن، وقتی که توی if قرار میگیرن رو رعایت کنیم...
💥مثال های دیگه با شما....
@purecoder_ir
✨MediaQuery as InheritedModel
✨Returns size for the nearest MediaQuery ancestor or throws an exception, if no such ancestor exists.
✨Use of this method will cause the given context to rebuild any time that the MediaQueryData.size property of the ancestor MediaQuery changes.
@purecoder_ir
sizeOf static method
Size sizeOf(
BuildContext context
)
✨Returns size for the nearest MediaQuery ancestor or throws an exception, if no such ancestor exists.
✨Use of this method will cause the given context to rebuild any time that the MediaQueryData.size property of the ancestor MediaQuery changes.
@purecoder_ir
Forwarded from Persian Flutter (PayamZ)
میدونید علاوه بر Mobile، Web و Desktop فلاتر رو میشه روی چه پلتفرم های دیگه ای ران کرد؟
تو این مقاله به صورت کامل و قدم به قدم توضیح دادیم که چطور میشه فلاتر روی Embedded Linux ران کرد و برای این کار به چه چیز هایی نیاز داریم.
اگه براتون مفید بود لایک یادتون نره و با دوستانتون به اشتراک بگزارید.
https://medium.com/snapp-x/flutter-on-embedded-devices-7070b5907b91
تو این مقاله به صورت کامل و قدم به قدم توضیح دادیم که چطور میشه فلاتر روی Embedded Linux ران کرد و برای این کار به چه چیز هایی نیاز داریم.
اگه براتون مفید بود لایک یادتون نره و با دوستانتون به اشتراک بگزارید.
https://medium.com/snapp-x/flutter-on-embedded-devices-7070b5907b91
Medium
Flutter on Embedded Devices
Learn how to run Flutter on embedded devices with this detailed step-by-step guide.
✨✨50% تخفیف✨✨
😍تخفیف ویژه دوره ی Object Oriented Design به مدت محدود...
⭕️مباحث دوره :
✅مبانی Structured Programming
✅مبانی Object Oriented
✅مباحث پیشرفته Object Oriented
✅بررسی تخصصی و کاملن متفاوت اصول SOLID
➕معماری کلین
➕چند دیزاین پترن
Command, Visitor, Strategy, Template Method, Adapter, ...
💥دوره جامع و مستقل از زبان یا فریمورک خاص
💥مقایسه زبان های استاتیک و داینامیک تایپ
💥نمونه کدهای دوره به زبان های JAVA, C#, Dart
💥پشتیبانی آنلاین
💥دوره 90 درصد تکمیل شده
💥قیمت اصلی: ۱ میلیون و ۴۰۰ هزار تومن
💥قیمت با تخفیف: ۷۰۰ هزار تومان (۵۰ درصد)
⭕️لینک دوره:
https://purecoder.ir/course/object-oriented-design-part-one/
⚠️برای مشاهده سرفصل های دوره و توضیحات بیشتر لینک بالا رو مشاهده کنید.
💥برای ثبت نام در دوره به ایدی زیر پیام بدید:
@purecoder_support
⚠️حتمن برای ثبت نام در دوره به ایدی بالا پیام بدید و از طریق سایت اقدام نکیند.
➕همچنین برای دریافت مشاوره هم میتونید به ایدی بالا پیام بدید.
@purecoder_ir
😍تخفیف ویژه دوره ی Object Oriented Design به مدت محدود...
⭕️مباحث دوره :
✅مبانی Structured Programming
✅مبانی Object Oriented
✅مباحث پیشرفته Object Oriented
✅بررسی تخصصی و کاملن متفاوت اصول SOLID
➕معماری کلین
➕چند دیزاین پترن
Command, Visitor, Strategy, Template Method, Adapter, ...
💥دوره جامع و مستقل از زبان یا فریمورک خاص
💥مقایسه زبان های استاتیک و داینامیک تایپ
💥نمونه کدهای دوره به زبان های JAVA, C#, Dart
💥پشتیبانی آنلاین
💥دوره 90 درصد تکمیل شده
💥قیمت اصلی: ۱ میلیون و ۴۰۰ هزار تومن
💥قیمت با تخفیف: ۷۰۰ هزار تومان (۵۰ درصد)
⭕️لینک دوره:
https://purecoder.ir/course/object-oriented-design-part-one/
⚠️برای مشاهده سرفصل های دوره و توضیحات بیشتر لینک بالا رو مشاهده کنید.
💥برای ثبت نام در دوره به ایدی زیر پیام بدید:
@purecoder_support
⚠️حتمن برای ثبت نام در دوره به ایدی بالا پیام بدید و از طریق سایت اقدام نکیند.
➕همچنین برای دریافت مشاوره هم میتونید به ایدی بالا پیام بدید.
@purecoder_ir
⭕️آدرس سایت:
https://purecoder.ir
⭕️کانال:
@purecoder_ir
⭕️گروه:
@purecoder_gp
⭕️پشتیبانی:
@PureCoder_support
⭕️بحث و گفت و گو (Clean Code,... ):
@PureTalk_gp
https://purecoder.ir
⭕️کانال:
@purecoder_ir
⭕️گروه:
@purecoder_gp
⭕️پشتیبانی:
@PureCoder_support
⭕️بحث و گفت و گو (Clean Code,... ):
@PureTalk_gp
Forwarded from Persian Flutter (PayamZ)
This media is not supported in your browser
VIEW IN TELEGRAM
میدونستید که میتونید تو فلاتر Code preview درست کنید؟
تو ورژن بعدی Toastification میخوایم چیزای خفنی رو اضافه کنیم
https://github.com/payam-zahedi/toastification
تو ورژن بعدی Toastification میخوایم چیزای خفنی رو اضافه کنیم
https://github.com/payam-zahedi/toastification
💥Challenge
var a = 0.6;
var b = 0.2;
var c = 0.1;
a - b = 0.39999999999999997
a - c = 0.5
❓❓❓چرا؟
❓چرا نتیجه تفریق ۰/۲ از ۰/۶ مقدار ۰/۴ نشد ولی نتیجه تفریق ۰/۱ از ۰/۶ مقدار دقیق ۰/۵ شد؟
❓چکار کنیم که به جای اینکه وارد else بشه وارد if بشه و Yes چاپ بشه؟
@purecoder_ir
var a = 0.6;
var b = 0.2;
var c = 0.1;
a - b = 0.39999999999999997
a - c = 0.5
❓❓❓چرا؟
❓چرا نتیجه تفریق ۰/۲ از ۰/۶ مقدار ۰/۴ نشد ولی نتیجه تفریق ۰/۱ از ۰/۶ مقدار دقیق ۰/۵ شد؟
❓چکار کنیم که به جای اینکه وارد else بشه وارد if بشه و Yes چاپ بشه؟
@purecoder_ir
Pure Coder
💥Challenge var a = 0.6; var b = 0.2; var c = 0.1; a - b = 0.39999999999999997 a - c = 0.5 ❓❓❓چرا؟ ❓چرا نتیجه تفریق ۰/۲ از ۰/۶ مقدار ۰/۴ نشد ولی نتیجه تفریق ۰/۱ از ۰/۶ مقدار دقیق ۰/۵ شد؟ ❓چکار کنیم که به جای اینکه وارد else بشه وارد if بشه و Yes چاپ…
💥Challenge
💥خب مثال قبلی توی زبان دارت بود که فقط یه نوع double رو داره.
💥حالا همین مثال رو توی زبان سی شارپ که سه نوع float و double و decimal رو داره رو میبینیم.
💥نتیجه ای که با نوع double بدست اومده شبیه به دارته. ولی دو تای دیگه متفاوته.
💥💥نتیجه ای که با نوع decimal بدست اومده کاملن دقیقه.
⚠️البته به این معنا نیست که همیشه نتیجه ی دقیق میده... برای این مثال این اتفاق افتاده .
💥💥نتیجه ای که با نوع double و float بدست اومده, هر دو خطا دارن, ولی نوع double دقت بیشتری داره.
💥پس میتونیم نتیجه بگیریم که دقت decimal از double بیشتره و double از float...
❓چرا؟
@purecoder_ir
💥خب مثال قبلی توی زبان دارت بود که فقط یه نوع double رو داره.
💥حالا همین مثال رو توی زبان سی شارپ که سه نوع float و double و decimal رو داره رو میبینیم.
💥نتیجه ای که با نوع double بدست اومده شبیه به دارته. ولی دو تای دیگه متفاوته.
💥💥نتیجه ای که با نوع decimal بدست اومده کاملن دقیقه.
⚠️البته به این معنا نیست که همیشه نتیجه ی دقیق میده... برای این مثال این اتفاق افتاده .
💥💥نتیجه ای که با نوع double و float بدست اومده, هر دو خطا دارن, ولی نوع double دقت بیشتری داره.
💥پس میتونیم نتیجه بگیریم که دقت decimal از double بیشتره و double از float...
❓چرا؟
@purecoder_ir
Pure Coder
💥Challenge 💥خب مثال قبلی توی زبان دارت بود که فقط یه نوع double رو داره. 💥حالا همین مثال رو توی زبان سی شارپ که سه نوع float و double و decimal رو داره رو میبینیم. 💥نتیجه ای که با نوع double بدست اومده شبیه به دارته. ولی دو تای دیگه متفاوته. 💥💥نتیجه ای…
💥float (single) => 32 bit (4 byte)
💥double => 64 bit (8 byte)
💥decimal => 128 bit (16 byte)
@purecoder_ir
💥double => 64 bit (8 byte)
💥decimal => 128 bit (16 byte)
@purecoder_ir