<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>آموزش دارت &#8211; programmingshow | پروگرمینگ شو</title>
	<atom:link href="https://programmingshow.ir/category/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%af%d8%a7%d8%b1%d8%aa/feed/" rel="self" type="application/rss+xml" />
	<link>https://programmingshow.ir</link>
	<description>آموزش تخصصی برنامه نویسی </description>
	<lastBuildDate>Mon, 18 Nov 2024 13:16:09 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://programmingshow.ir/wp-content/uploads/2024/10/elementor/thumbs/logo-512-qx3z74r3csu7cz4ph342bcldcbl3zej8faux3utlf2.png</url>
	<title>آموزش دارت &#8211; programmingshow | پروگرمینگ شو</title>
	<link>https://programmingshow.ir</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>آموزش رایگان زبان دارت &#8211; انتزاع در دارت</title>
		<link>https://programmingshow.ir/abstraction-in-dart/</link>
					<comments>https://programmingshow.ir/abstraction-in-dart/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Fri, 28 Jun 2024 06:30:35 +0000</pubDate>
				<category><![CDATA[آموزش دارت]]></category>
		<category><![CDATA[آموزش رایگان]]></category>
		<category><![CDATA[آموزش فلاتر]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=1528</guid>

					<description><![CDATA[کلاس‌های انتزاعی کلاس‌هایی هستند که نمی‌توان از آن‌ها شیء‌سازی کرد و معمولاً شامل متدهای انتزاعی هستند که باید توسط کلاس‌های فرزند پیاده‌سازی شوند.]]></description>
										<content:encoded><![CDATA[<iframe id='wp-aparat-6a8e5e892201b' src='https://www.aparat.com/video/video/embed/videohash/3JhC5/vt/frame' width='100%' allowfullscreen='true' class='aparat-frame aparat-full-frame'></iframe>
<p>&nbsp;</p>
<p>انتزاع (Abstraction) یکی از اصول اساسی در برنامه‌نویسی شی‌گرا (OOP) است که به مخفی‌سازی جزئیات پیاده‌سازی و نمایش فقط ویژگی‌ها و رفتارهای مهم برای استفاده کاربران می‌پردازد. این مقاله به بررسی مفهوم انتزاع در <a href="https://dart.dev/tutorials" target="_blank" rel="noopener">زبان دارت (Dart)</a> و نحوه استفاده از آن می‌پردازد. همچنین به معرفی <strong><a href="https://programmingshow.ir/product/diamond-flutter/">دوره فلاتر الماس</a></strong> که به آموزش این مفاهیم می‌پردازد، اشاره خواهیم کرد.</p>
<p>&nbsp;</p>
<h2><span style="color: #e00000;"><strong>انتزاع در دارت</strong></span></h2>
<p><a href="https://www.geeksforgeeks.org/abstract-classes-in-dart/" target="_blank" rel="noopener"><strong>انتزاع</strong></a> به ما امکان می‌دهد تا جزئیات پیچیده یک سیستم را مخفی کرده و فقط بخش‌های مهم و مورد نیاز کاربران را نمایش دهیم. در دارت، انتزاع معمولاً از طریق کلاس‌های انتزاعی (Abstract Classes) و اینترفیس‌ها (<a href="https://www.tutorialspoint.com/dart_programming/dart_programming_interfaces.htm" target="_blank" rel="noopener">Interfaces</a>) پیاده‌سازی می‌شود.</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #e00000;">کلاس‌های انتزاعی</span></strong></h3>
<p>کلاس‌های انتزاعی کلاس‌هایی هستند که نمی‌توان از آن‌ها شیء‌سازی کرد و معمولاً شامل متدهای انتزاعی هستند که باید توسط کلاس‌های فرزند پیاده‌سازی شوند. این نوع کلاس‌ها برای تعریف اینترفیس‌های عمومی و استاندارد در یک سلسله مراتب ارث‌بری استفاده می‌شوند.</p>
<p>&nbsp;</p>
<h4><strong><span style="color: #e00000;">تعریف کلاس انتزاعی</span></strong></h4>
<p>در دارت، برای تعریف یک کلاس انتزاعی از کلمه کلیدی <a href="https://medium.com/@yetesfadev/abstract-class-short-b69cde4278ea#:~:text=In%20summary%2C%20abstract%20classes%20in,inherit%20their%20properties%20and%20methods." target="_blank" rel="noopener"><code>abstract</code></a> استفاده می‌شود. مثال زیر یک کلاس انتزاعی را نشان می‌دهد:</p>
<p>&nbsp;</p>
<figure id="attachment_2469" aria-describedby="caption-attachment-2469" style="width: 601px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" class="wp-image-2469 size-full" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-15-1.png" alt="تعریف کلاس انتزاعی" width="601" height="543" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-15-1.png 601w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-15-1-300x271.png 300w" sizes="(max-width: 601px) 100vw, 601px" /><figcaption id="caption-attachment-2469" class="wp-caption-text">تعریف کلاس انتزاعی</figcaption></figure>
<p>&nbsp;</p>
<p>در این مثال، کلاس <code>Animal</code> یک کلاس انتزاعی است که دارای یک متد انتزاعی <code>makeSound</code> و یک متد غیر انتزاعی <code>sleep</code> می‌باشد. کلاس <code>Dog</code> از <code>Animal</code> ارث‌بری کرده و متد <code>makeSound</code> را پیاده‌سازی می‌کند.</p>
<p>&nbsp;</p>
<h3><span style="color: #e00000;"><strong>اینترفیس‌ها</strong></span></h3>
<p>اینترفیس‌ها در دارت به ما امکان می‌دهند تا مجموعه‌ای از متدها را تعریف کنیم که باید توسط کلاس‌های پیاده‌سازی‌کننده بازنویسی شوند. اینترفیس‌ها به ما انعطاف بیشتری در طراحی و استفاده از انتزاع می‌دهند.</p>
<p>&nbsp;</p>
<h4><span style="color: #e00000;"><strong>تعریف اینترفیس</strong></span></h4>
<p>در دارت، اینترفیس‌ها با استفاده از کلاس‌های معمولی تعریف می‌شوند، اما تفاوت در این است که کلاس‌هایی که این اینترفیس‌ها را پیاده‌سازی می‌کنند باید تمامی متدهای تعریف شده در اینترفیس را پیاده‌سازی کنند.</p>
<p>&nbsp;</p>
<figure id="attachment_2470" aria-describedby="caption-attachment-2470" style="width: 665px" class="wp-caption aligncenter"><img decoding="async" class="wp-image-2470 size-full" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-16-1.png" alt="اینترفیس" width="665" height="655" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-16-1.png 665w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-16-1-300x295.png 300w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-16-1-600x591.png 600w" sizes="(max-width: 665px) 100vw, 665px" /><figcaption id="caption-attachment-2470" class="wp-caption-text">اینترفیس</figcaption></figure>
<p>&nbsp;</p>
<p>در این مثال، کلاس <code>Shape</code> به عنوان یک اینترفیس عمل می‌کند و کلاس‌های <code>Circle</code> و <code>Square</code> آن را پیاده‌سازی می‌کنند.</p>
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"></div>
<p>&nbsp;</p>
<h2><strong><span style="color: #e00000;">آموزش انتزاع در دارت</span></strong></h2>
<p>یادگیری مفاهیم انتزاع در دارت برای توسعه‌دهندگان فلاتر اهمیت زیادی دارد. درک صحیح این مفاهیم می‌تواند به توسعه نرم‌افزارهای پایدار و قابل نگهداری کمک کند. دوره فلاتر الماس یکی از منابع آموزشی معتبر است که به آموزش اصول برنامه‌نویسی شی‌گرا و انتزاع در دارت می‌پردازد.</p>
<p>&nbsp;</p>
<h3><span style="color: #e00000;"><strong>محتوای دوره فلاتر الماس</strong></span></h3>
<p><strong><a href="https://programmingshow.ir/product/diamond-flutter/">دوره فلاتر الماس</a></strong> به صورت جامع به آموزش فلاتر و دارت می‌پردازد و شامل مباحث متعددی از جمله انتزاع می‌باشد. در این دوره، مفاهیم انتزاع به صورت تئوری و عملی آموزش داده می‌شود و شرکت‌کنندگان با مثال‌های متعددی از دنیای واقعی روبرو می‌شوند.</p>
<p>برخی از مباحثی که در این دوره پوشش داده می‌شوند عبارتند از:</p>
<ul>
<li>معرفی و مبانی برنامه‌نویسی شی‌گرا</li>
<li>تعریف کلاس‌ها و اشیاء</li>
<li>اصول انتزاع و نحوه استفاده از آن</li>
<li>کلاس‌های انتزاعی و کاربرد آن‌ها</li>
<li>اینترفیس‌ها و پیاده‌سازی آن‌ها</li>
<li>مدیریت و بهینه‌سازی اشیاء با استفاده از انتزاع</li>
</ul>
<h2></h2>
<h2><strong><span style="color: #e00000;">مزایای استفاده از انتزاع در دارت</span></strong></h2>
<p>استفاده از انتزاع در دارت دارای مزایای متعددی است که برخی از آن‌ها عبارتند از:</p>
<ol>
<li><span style="color: #e00000;"><strong> کاهش پیچیدگی<br />
</strong></span>انتزاع به ما امکان می‌دهد تا جزئیات پیچیده یک سیستم را مخفی کنیم و فقط بخش‌های مهم و مورد نیاز کاربران را نمایش دهیم، که این امر باعث کاهش پیچیدگی کد می‌شود.</li>
<li><span style="color: #e00000;"><strong>افزایش قابلیت استفاده مجدد<br />
</strong></span>با استفاده از انتزاع، می‌توانیم کدهای خود را به گونه‌ای طراحی کنیم که به راحتی قابل استفاده مجدد باشند.</li>
<li><span style="color: #e00000;"><strong>تسهیل در نگهداری کد<br />
</strong></span>انتزاع به ما امکان می‌دهد تا کدهای خود را به گونه‌ای طراحی کنیم که نگهداری و به‌روزرسانی آن‌ها آسان‌تر باشد.</li>
<li><span style="color: #e00000;"><strong>بهبود خوانایی کد<br />
</strong></span>با مخفی‌سازی جزئیات پیچیده و نمایش فقط بخش‌های مهم، می‌توانیم کدهای خود را خواناتر و قابل درک‌تر کنیم.</li>
</ol>
<p>&nbsp;</p>
<h2><span style="color: #e00000;"><strong>مثال‌های عملی از انتزاع در فلاتر</strong></span></h2>
<p>برای درک بهتر انتزاع در دارت، به چند مثال عملی از استفاده آن در پروژه‌های فلاتر می‌پردازیم.</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #e00000;">مثال 1: ایجاد ویجت‌های سفارشی با انتزاع</span></strong></h3>
<p>در فلاتر، می‌توانیم از انتزاع برای ایجاد ویجت‌های سفارشی استفاده کنیم:</p>
<p>&nbsp;</p>
<figure id="attachment_2471" aria-describedby="caption-attachment-2471" style="width: 774px" class="wp-caption aligncenter"><img decoding="async" class="wp-image-2471 size-large" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-17-1-774x1024.png" alt="ایجاد ویجت‌های سفارشی با انتزاع" width="774" height="1024" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-17-1-774x1024.png 774w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-17-1-227x300.png 227w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-17-1-768x1016.png 768w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-17-1-600x794.png 600w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-17-1.png 833w" sizes="(max-width: 774px) 100vw, 774px" /><figcaption id="caption-attachment-2471" class="wp-caption-text">ایجاد ویجت‌های سفارشی با انتزاع</figcaption></figure>
<p>&nbsp;</p>
<h3><span style="color: #e00000;"><strong>مثال 2: مدیریت داده‌ها با انتزاع</strong></span></h3>
<p>در برنامه‌های پیچیده، ممکن است نیاز باشد تا داده‌ها را با استفاده از انتزاع مدیریت کنیم. می‌توانیم از انتزاع برای این منظور استفاده کنیم:</p>
<p>&nbsp;</p>
<figure id="attachment_2472" aria-describedby="caption-attachment-2472" style="width: 887px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-2472" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-18-1.png" alt=" مدیریت داده‌ها با انتزاع" width="887" height="655" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-18-1.png 887w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-18-1-300x222.png 300w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-18-1-768x567.png 768w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-18-1-600x443.png 600w" sizes="(max-width: 887px) 100vw, 887px" /><figcaption id="caption-attachment-2472" class="wp-caption-text">مدیریت داده‌ها با انتزاع</figcaption></figure>
<p>&nbsp;</p>
<h3><span style="color: #e00000;">نتیجه‌گیری</span></h3>
<p>انتزاع یکی از اصول مهم و کاربردی در برنامه‌نویسی شی‌گرا است که در زبان دارت و فلاتر نقش مهمی ایفا می‌کند. با استفاده از انتزاع، توسعه‌دهندگان می‌توانند کدهای انعطاف‌پذیرتر، قابل استفاده مجددتر و قابل نگهداری‌تری بنویسند.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/abstraction-in-dart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش رایگان زبان دارت &#8211; چند ریختی در دارت</title>
		<link>https://programmingshow.ir/polymorphism-in-dart/</link>
					<comments>https://programmingshow.ir/polymorphism-in-dart/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Wed, 26 Jun 2024 06:30:07 +0000</pubDate>
				<category><![CDATA[آموزش دارت]]></category>
		<category><![CDATA[آموزش رایگان]]></category>
		<category><![CDATA[دسته‌بندی نشده]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=1529</guid>

					<description><![CDATA[چندریختی به توسعه‌دهندگان اجازه می‌دهد تا از یک اینترفیس مشترک برای اشیاء مختلف استفاده کنند. این امر به برنامه‌ها انعطاف بیشتری می‌دهد و امکان استفاده مجدد از کد را افزایش می‌دهد.]]></description>
										<content:encoded><![CDATA[<iframe id='wp-aparat-6a8e5e8922a88' src='https://www.aparat.com/video/video/embed/videohash/ydpWb/vt/frame' width='100%' allowfullscreen='true' class='aparat-frame aparat-full-frame'></iframe>
<p>&nbsp;</p>
<p><a href="https://medium.com/@moyeen_haider/polymorphism-in-dart-7ef059c4e14e" target="_blank" rel="noopener">چندریختی (Polymorphism)</a> یکی از مفاهیم کلیدی و اساسی در برنامه‌نویسی شی‌گرا (OOP) است. این مفهوم به برنامه‌ها اجازه می‌دهد که از یک اینترفیس مشترک برای اشیاء مختلف استفاده کنند. در این مقاله، به بررسی مفهوم چندریختی در<a href="https://dart.dev/" target="_blank" rel="noopener"> زبان دارت (Dart)</a> پرداخته و نحوه استفاده از آن را توضیح می‌دهیم. همچنین به معرفی دوره فلاتر الماس که به آموزش این مفاهیم می‌پردازد، اشاره خواهیم کرد.</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">چندریختی در دارت</span></strong></h2>
<p>چندریختی به توسعه‌دهندگان اجازه می‌دهد تا از یک اینترفیس مشترک برای اشیاء مختلف استفاده کنند. این امر به برنامه‌ها انعطاف بیشتری می‌دهد و امکان استفاده مجدد از کد را افزایش می‌دهد. چندریختی در دارت از طریق وراثت و اینترفیس‌ها (<a href="https://dart-tutorial.com/object-oriented-programming/interface-in-dart/" target="_blank" rel="noopener">interfaces</a>) پیاده‌سازی می‌شود.</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #d90000;">چندریختی با وراثت</span></strong></h3>
<p>در دارت، کلاس‌ها می‌توانند از کلاس‌های دیگر ارث‌بری کنند و متدهای آن‌ها را بازنویسی (<a href="https://www.google.com/search?q=dart+programming+override&amp;sca_esv=8eb2b271edd6fc02&amp;rlz=1C5CHFA_enIR1083IR1083&amp;sxsrf=ADLYWIKPJgHySe7Sf7zIVmZrzdRiXZSs8A%3A1718722491253&amp;ei=u59xZsmED_CL9u8PtYiYyA0&amp;ved=0ahUKEwiJzructOWGAxXwhf0HHTUEBtkQ4dUDCBA&amp;uact=5&amp;oq=dart+programming+override&amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiGWRhcnQgcHJvZ3JhbW1pbmcgb3ZlcnJpZGUyBRAhGKABMgUQIRigATIFECEYnwUyBRAhGJ8FMgUQIRifBTIFECEYnwVIuQZQrQJYrQJwAngBkAEAmAGkA6ABpAOqAQM0LTG4AQPIAQD4AQL4AQGYAgOgArMDwgIKEAAYsAMY1gQYR5gDAIgGAZAGCJIHBTIuNC0xoAe3Bg&amp;sclient=gws-wiz-serp" target="_blank" rel="noopener">override</a>) کنند. این امر به ما اجازه می‌دهد تا از متدهای یکسان برای اشیاء مختلف استفاده کنیم.</p>
<p>&nbsp;</p>
<figure id="attachment_2461" aria-describedby="caption-attachment-2461" style="width: 685px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2461 size-full" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-11-1-1.png" alt="چندریختی با وراثت" width="685" height="692" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-11-1-1.png 685w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-11-1-1-297x300.png 297w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-11-1-1-600x606.png 600w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-11-1-1-100x100.png 100w" sizes="(max-width: 685px) 100vw, 685px" /><figcaption id="caption-attachment-2461" class="wp-caption-text">چندریختی با وراثت</figcaption></figure>
<p>&nbsp;</p>
<p>در این مثال، کلاس‌های <code>Dog</code> و <code>Cat</code> از کلاس <code>Animal</code> ارث‌بری کرده و متد <code>makeSound</code> را بازنویسی کرده‌اند. با استفاده از چندریختی، می‌توانیم از یک اینترفیس مشترک برای اشیاء مختلف استفاده کنیم.</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #d90000;">چندریختی با اینترفیس‌ها</span></strong></h3>
<p>اینترفیس‌ها در دارت به ما امکان می‌دهند تا مجموعه‌ای از متدها را تعریف کنیم که باید توسط کلاس‌های پیاده‌سازی‌کننده (implement) بازنویسی شوند. این امر به ما انعطاف بیشتری در طراحی و استفاده از چندریختی می‌دهد.</p>
<p>&nbsp;</p>
<figure id="attachment_2462" aria-describedby="caption-attachment-2462" style="width: 685px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2462 size-full" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-12-1-1.png" alt="چندریختی با اینترفیس‌ها" width="685" height="655" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-12-1-1.png 685w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-12-1-1-300x287.png 300w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-12-1-1-600x574.png 600w" sizes="(max-width: 685px) 100vw, 685px" /><figcaption id="caption-attachment-2462" class="wp-caption-text">چندریختی با اینترفیس‌ها</figcaption></figure>
<p>&nbsp;</p>
<p>در این مثال، اینترفیس <code>Shape</code> تعریف شده و کلاس‌های <code>Circle</code> و <code>Square</code> آن را پیاده‌سازی کرده‌اند. این امر به ما امکان می‌دهد تا از چندریختی برای اشیاء مختلف استفاده کنیم.</p>
<h2></h2>
<h2><strong><span style="color: #d90000;">آموزش چندریختی در دارت</span></strong></h2>
<p>یادگیری مفاهیم چندریختی در دارت برای توسعه‌دهندگان فلاتر اهمیت زیادی دارد. درک صحیح این مفاهیم می‌تواند به توسعه نرم‌افزارهای پایدار و قابل نگهداری کمک کند. دوره فلاتر الماس یکی از منابع آموزشی معتبر است که به آموزش اصول برنامه‌نویسی شی‌گرا و چندریختی در دارت می‌پردازد.</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #d90000;">محتوای دوره فلاتر الماس</span></strong></h3>
<p><a href="https://programmingshow.ir/product/diamond-flutter/"><strong>دوره فلاتر الماس</strong></a> به صورت جامع به آموزش فلاتر و دارت می‌پردازد و شامل مباحث متعددی از جمله چندریختی می‌باشد. در این دوره، مفاهیم چندریختی به صورت تئوری و عملی آموزش داده می‌شود و شرکت‌کنندگان با مثال‌های متعددی از دنیای واقعی روبرو می‌شوند.</p>
<p>برخی از مباحثی که در این دوره پوشش داده می‌شوند عبارتند از:</p>
<ul>
<li>معرفی و مبانی برنامه‌نویسی شی‌گرا</li>
<li>تعریف کلاس‌ها و اشیاء</li>
<li>اصول چندریختی و نحوه استفاده از آن</li>
<li>چندریختی با استفاده از وراثت</li>
<li>چندریختی با استفاده از اینترفیس‌ها</li>
<li>مدیریت و بهینه‌سازی اشیاء با استفاده از چندریختی</li>
</ul>
<p>&nbsp;</p>
<h2><span style="color: #d90000;"><strong>مزایای استفاده از چندریختی در دارت</strong></span></h2>
<p>استفاده از چندریختی در دارت دارای مزایای متعددی است که برخی از آن‌ها عبارتند از:</p>
<ul>
<li><strong><span style="color: #d90000;">1. افزایش انعطاف‌پذیری<br />
</span></strong>چندریختی به ما امکان می‌دهد تا از یک اینترفیس مشترک برای اشیاء مختلف استفاده کنیم، که این امر باعث افزایش انعطاف‌پذیری کد می‌شود.</li>
<li><span style="color: #d90000;"><strong>2. کاهش تکرار کد<br />
</strong></span>با استفاده از چندریختی، می‌توانیم از متدهای یکسان برای اشیاء مختلف استفاده کنیم، که این امر باعث کاهش تکرار کد می‌شود.</li>
<li><span style="color: #d90000;"><strong>3. افزایش قابلیت استفاده مجدد<br />
</strong></span>چندریختی به ما امکان می‌دهد تا کدهای خود را به گونه‌ای طراحی کنیم که به راحتی قابل استفاده مجدد باشند.</li>
<li><span style="color: #d90000;"><strong>4. تسهیل در نگهداری کد<br />
</strong></span>با استفاده از چندریختی، می‌توانیم کدهای خود را به گونه‌ای طراحی کنیم که نگهداری و به‌روزرسانی آن‌ها آسان‌تر باشد.</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">مثال‌های عملی از چندریختی در فلاتر</span></strong></h2>
<p>برای درک بهتر چندریختی در دارت، به چند مثال عملی از استفاده آن در پروژه‌های فلاتر می‌پردازیم.</p>
<h3></h3>
<h3><strong><span style="color: #d90000;">مثال 1: ایجاد ویجت‌های سفارشی</span></strong></h3>
<p>در فلاتر، می‌توانیم از چندریختی برای ایجاد ویجت‌های سفارشی استفاده کنیم:</p>
<p>&nbsp;</p>
<figure id="attachment_2464" aria-describedby="caption-attachment-2464" style="width: 737px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2464 size-large" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-13-1-1-737x1024.png" alt="ایجاد ویجت‌های سفارشی" width="737" height="1024" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-13-1-1-737x1024.png 737w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-13-1-1-216x300.png 216w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-13-1-1-768x1067.png 768w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-13-1-1-600x834.png 600w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-13-1-1.png 793w" sizes="(max-width: 737px) 100vw, 737px" /><figcaption id="caption-attachment-2464" class="wp-caption-text">ایجاد ویجت‌های سفارشی</figcaption></figure>
<p>&nbsp;</p>
<h3><strong><span style="color: #d90000;">مثال 2: مدیریت داده‌ها با چندریختی</span></strong></h3>
<p>در برنامه‌های پیچیده، ممکن است نیاز باشد تا داده‌ها را با استفاده از چندریختی مدیریت کنیم. می‌توانیم از چندریختی برای این منظور استفاده کنیم:</p>
<p>&nbsp;</p>
<figure id="attachment_2465" aria-describedby="caption-attachment-2465" style="width: 895px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-2465" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-14-1.png" alt="مدیریت داده‌ها با چندریختی" width="895" height="655" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-14-1.png 895w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-14-1-300x220.png 300w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-14-1-768x562.png 768w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-14-1-600x439.png 600w" sizes="(max-width: 895px) 100vw, 895px" /><figcaption id="caption-attachment-2465" class="wp-caption-text">مدیریت داده‌ها با چندریختی</figcaption></figure>
<p>&nbsp;</p>
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"></div>
<h3><strong><span style="color: #d90000;">نتیجه‌گیری</span></strong></h3>
<p>چندریختی یکی از اصول مهم و کاربردی در برنامه‌نویسی شی‌گرا است که در زبان دارت و فلاتر نقش مهمی ایفا می‌کند. با استفاده از چندریختی، توسعه‌دهندگان می‌توانند کدهای انعطاف‌پذیرتر، قابل استفاده مجددتر و قابل نگهداری‌تری بنویسند. دوره فلاتر الماس با ارائه آموزش‌های جامع و کاربردی، یکی از بهترین منابع برای یادگیری این مفاهیم است.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/polymorphism-in-dart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش رایگان زبان دارت &#8211; کلاس سازنده در دارت</title>
		<link>https://programmingshow.ir/constructors-in-dart/</link>
					<comments>https://programmingshow.ir/constructors-in-dart/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Mon, 24 Jun 2024 06:30:45 +0000</pubDate>
				<category><![CDATA[آموزش دارت]]></category>
		<category><![CDATA[آموزش رایگان]]></category>
		<category><![CDATA[دسته‌بندی نشده]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=1531</guid>

					<description><![CDATA[کلاس سازنده در دارت روشی برای مقداردهی اولیه به اشیاء است. به عبارت دیگر، کلاس سازنده همان متدی است که هنگام ایجاد یک شیء جدید از کلاس فراخوانی می‌شود]]></description>
										<content:encoded><![CDATA[<iframe id='wp-aparat-6a8e5e8923313' src='https://www.aparat.com/video/video/embed/videohash/gXYNy/vt/frame' width='100%' allowfullscreen='true' class='aparat-frame aparat-full-frame'></iframe>
<p>&nbsp;</p>
<div class="w-full text-token-text-primary" dir="auto" data-testid="conversation-turn-5" data-scroll-anchor="true">
<div class="py-2 juice:py-[18px] px-3 text-base md:px-4 m-auto md:px-5 lg:px-1 xl:px-5">
<div class="mx-auto flex flex-1 gap-3 text-base juice:gap-4 juice:md:gap-5 juice:lg:gap-6 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem]">
<div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn">
<div class="flex-col gap-1 md:gap-3">
<div class="flex flex-grow flex-col max-w-full">
<div class="min-h-[20px] text-message flex flex-col items-start whitespace-pre-wrap break-words [.text-message+&amp;]:mt-5 juice:w-full juice:items-end overflow-x-auto gap-2" dir="auto" data-message-author-role="assistant" data-message-id="facc22af-5612-4ca1-b02b-8a975676dd54">
<div class="flex w-full flex-col gap-1 juice:empty:hidden juice:first:pt-[3px]">
<div class="markdown prose w-full break-words dark:prose-invert light">
<p><a href="https://dart.dev/language/constructors" target="_blank" rel="noopener"><strong>کلاس سازنده (Constructor)</strong></a> یکی از مباحث مهم و پایه‌ای در برنامه‌نویسی شی‌گرا (OOP) است که به ایجاد و مقداردهی اشیاء جدید کمک می‌کند. در <a href="https://dart.dev/" target="_blank" rel="noopener">زبان دارت (Dart)</a>، کلاس سازنده نقش حیاتی در تعریف و مقداردهی اولیه به اشیاء ایفا می‌کند. این مقاله به بررسی مفاهیم مرتبط با کلاس سازنده در دارت پرداخته و نحوه استفاده از آن را توضیح می‌دهد. همچنین به معرفی دوره فلاتر الماس که به آموزش این مفاهیم می‌پردازد، اشاره خواهیم کرد.</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">کلاس سازنده در دارت</span></strong></h2>
<p>کلاس سازنده در دارت روشی برای مقداردهی اولیه به اشیاء است. به عبارت دیگر، کلاس سازنده همان متدی است که هنگام ایجاد یک شیء جدید از کلاس فراخوانی می‌شود و به آن مقادیر اولیه را تخصیص می‌دهد. در دارت، چند نوع کلاس سازنده وجود دارد که در ادامه به بررسی آن‌ها می‌پردازیم.</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #d90000;">کلاس سازنده پیش‌فرض</span></strong></h3>
<p>اگر هیچ کلاس سازنده‌ای تعریف نشود، دارت یک کلاس سازنده پیش‌فرض بدون هیچ پارامتری برای کلاس ایجاد می‌کند. اما برای تعیین مقادیر اولیه، می‌توانیم کلاس سازنده سفارشی ایجاد کنیم.</p>
<p>&nbsp;</p>
<h3><span style="color: #d90000;"><strong>کلاس سازنده سفارشی</strong></span></h3>
<p>کلاس سازنده سفارشی به توسعه‌دهندگان امکان می‌دهد تا پارامترهایی را برای مقداردهی اولیه به شیء تعیین کنند. مثال زیر یک کلاس سازنده سفارشی را نشان می‌دهد:</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2447" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-5-1-1.png" alt="" width="679" height="413" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-5-1-1.png 679w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-5-1-1-300x182.png 300w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-5-1-1-600x365.png 600w" sizes="(max-width: 679px) 100vw, 679px" /></p>
<p>&nbsp;</p>
<div class="w-full text-token-text-primary" dir="auto" data-testid="conversation-turn-5" data-scroll-anchor="true">
<div class="py-2 juice:py-[18px] px-3 text-base md:px-4 m-auto md:px-5 lg:px-1 xl:px-5">
<div class="mx-auto flex flex-1 gap-3 text-base juice:gap-4 juice:md:gap-5 juice:lg:gap-6 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem]">
<div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn">
<div class="flex-col gap-1 md:gap-3">
<div class="flex flex-grow flex-col max-w-full">
<div class="min-h-[20px] text-message flex flex-col items-start whitespace-pre-wrap break-words [.text-message+&amp;]:mt-5 juice:w-full juice:items-end overflow-x-auto gap-2" dir="auto" data-message-author-role="assistant" data-message-id="facc22af-5612-4ca1-b02b-8a975676dd54">
<div class="flex w-full flex-col gap-1 juice:empty:hidden juice:first:pt-[3px]">
<div class="markdown prose w-full break-words dark:prose-invert light">
<p>&nbsp;</p>
<p>در این مثال، کلاس <code style="font-size: 16px;">Person</code> دارای یک کلاس سازنده سفارشی است که نام و سن شخص را مقداردهی اولیه می‌کند.</p>
</div>
</div>
</div>
</div>
</div>
<div class="flex-col gap-1 md:gap-3">
<div class="flex flex-grow flex-col max-w-full">
<div class="min-h-[20px] text-message flex flex-col items-start whitespace-pre-wrap break-words [.text-message+&amp;]:mt-5 juice:w-full juice:items-end overflow-x-auto gap-2" dir="auto" data-message-author-role="assistant" data-message-id="facc22af-5612-4ca1-b02b-8a975676dd54">
<div class="flex w-full flex-col gap-1 juice:empty:hidden juice:first:pt-[3px]">
<div class="markdown prose w-full break-words dark:prose-invert light">
<h3><strong><span style="color: #d90000;">کلاس سازنده نام‌گذاری شده</span></strong></h3>
<p>گاهی اوقات نیاز است چندین کلاس سازنده برای یک کلاس داشته باشیم. در این مواقع می‌توانیم از کلاس‌های سازنده نام‌گذاری شده استفاده کنیم. این نوع کلاس سازنده به ما اجازه می‌دهد که چندین روش برای ایجاد اشیاء از یک کلاس تعریف کنیم.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<figure id="attachment_2451" aria-describedby="caption-attachment-2451" style="width: 761px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-2451" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-7-1-1.png" alt="کلاس سازنده نام‌گذاری شده" width="761" height="506" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-7-1-1.png 761w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-7-1-1-300x199.png 300w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-7-1-1-600x399.png 600w" sizes="(max-width: 761px) 100vw, 761px" /><figcaption id="caption-attachment-2451" class="wp-caption-text">کلاس سازنده نام‌گذاری شده</figcaption></figure>
<p>&nbsp;</p>
<div class="w-full text-token-text-primary" dir="auto" data-testid="conversation-turn-5" data-scroll-anchor="true">
<div class="py-2 juice:py-[18px] px-3 text-base md:px-4 m-auto md:px-5 lg:px-1 xl:px-5">
<div class="mx-auto flex flex-1 gap-3 text-base juice:gap-4 juice:md:gap-5 juice:lg:gap-6 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem]">
<div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn">
<div class="flex-col gap-1 md:gap-3">
<div class="flex flex-grow flex-col max-w-full">
<div class="min-h-[20px] text-message flex flex-col items-start whitespace-pre-wrap break-words [.text-message+&amp;]:mt-5 juice:w-full juice:items-end overflow-x-auto gap-2" dir="auto" data-message-author-role="assistant" data-message-id="facc22af-5612-4ca1-b02b-8a975676dd54">
<div class="flex w-full flex-col gap-1 juice:empty:hidden juice:first:pt-[3px]">
<div class="markdown prose w-full break-words dark:prose-invert light">
<p>در این مثال، کلاس <code>Person</code> دارای دو کلاس سازنده است: یکی پیش‌فرض و دیگری نام‌گذاری شده.</p>
<h3><strong><span style="color: #d90000;">کلاس سازنده فکتوری</span></strong></h3>
<p>کلاس سازنده فکتوری در دارت به ما اجازه می‌دهد که منطق پیچیده‌تری برای ایجاد اشیاء داشته باشیم. این نوع کلاس سازنده می‌تواند اشیاء را بر اساس شرایط مختلف ایجاد یا مدیریت کند.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<figure id="attachment_2452" aria-describedby="caption-attachment-2452" style="width: 765px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-2452" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-8-1-1.png" alt="کلاس سازنده فکتوری" width="765" height="506" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-8-1-1.png 765w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-8-1-1-300x198.png 300w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-8-1-1-600x397.png 600w" sizes="(max-width: 765px) 100vw, 765px" /><figcaption id="caption-attachment-2452" class="wp-caption-text">کلاس سازنده فکتوری</figcaption></figure>
<div class="w-full text-token-text-primary" dir="auto" data-testid="conversation-turn-5" data-scroll-anchor="true">
<div class="py-2 juice:py-[18px] px-3 text-base md:px-4 m-auto md:px-5 lg:px-1 xl:px-5">
<div class="mx-auto flex flex-1 gap-3 text-base juice:gap-4 juice:md:gap-5 juice:lg:gap-6 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem]">
<div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn">
<div class="flex-col gap-1 md:gap-3">
<div class="flex flex-grow flex-col max-w-full">
<div class="min-h-[20px] text-message flex flex-col items-start whitespace-pre-wrap break-words [.text-message+&amp;]:mt-5 juice:w-full juice:items-end overflow-x-auto gap-2" dir="auto" data-message-author-role="assistant" data-message-id="facc22af-5612-4ca1-b02b-8a975676dd54">
<div class="flex w-full flex-col gap-1 juice:empty:hidden juice:first:pt-[3px]">
<div class="markdown prose w-full break-words dark:prose-invert light">
<p>&nbsp;</p>
<p>در این مثال، کلاس <code>Singleton</code> از یک کلاس سازنده فکتوری استفاده می‌کند تا همیشه یک نمونه یکسان از کلاس را برگرداند.</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">آموزش کلاس سازنده در دارت</span></strong></h2>
<p>یادگیری مفاهیم کلاس سازنده در دارت برای توسعه‌دهندگان فلاتر اهمیت زیادی دارد. درک صحیح این مفاهیم می‌تواند به توسعه نرم‌افزارهای پایدار و قابل نگهداری کمک کند. دوره فلاتر الماس یکی از منابع آموزشی معتبر است که به آموزش اصول ب<a href="https://dart-tutorial.com/object-oriented-programming/" target="_blank" rel="noopener">رنامه‌نویسی شی‌گرا</a> و کلاس‌های سازنده در دارت می‌پردازد.</p>
<p>&nbsp;</p>
<h3><span style="color: #d90000;"><strong>محتوای دوره فلاتر الماس</strong></span></h3>
<p><a href="https://programmingshow.ir/product/diamond-flutter/"><strong>دوره فلاتر الماس</strong></a> به صورت جامع به آموزش فلاتر و دارت می‌پردازد و شامل مباحث متعددی از جمله کلاس سازنده می‌باشد. در این دوره، مفاهیم کلاس سازنده به صورت تئوری و عملی آموزش داده می‌شود و شرکت‌کنندگان با مثال‌های متعددی از دنیای واقعی روبرو می‌شوند.</p>
<p>برخی از مباحثی که در این دوره پوشش داده می‌شوند عبارتند از:</p>
<ul>
<li>معرفی و مبانی برنامه‌نویسی شی‌گرا</li>
<li>تعریف کلاس‌ها و اشیاء</li>
<li>اصول کلاس سازنده و نحوه استفاده از آن</li>
<li>کلاس‌های سازنده نام‌گذاری شده و فکتوری</li>
<li>مدیریت و بهینه‌سازی اشیاء با استفاده از کلاس‌های سازنده</li>
</ul>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">مزایای استفاده از کلاس سازنده در دارت</span></strong></h2>
<p>استفاده از کلاس سازنده در دارت دارای مزایای متعددی است که برخی از آن‌ها عبارتند از:</p>
<h3><span style="color: #d90000;"><strong>1. مقداردهی اولیه به اشیاء</strong></span></h3>
<p>کلاس سازنده به ما امکان می‌دهد تا مقادیر اولیه را به اشیاء تخصیص دهیم، که این امر به ایجاد اشیاء با وضعیت مشخص کمک می‌کند.</p>
<h3><span style="color: #d90000;"><strong>2. تسهیل در ایجاد اشیاء پیچیده</strong></span></h3>
<p>با استفاده از کلاس‌های سازنده نام‌گذاری شده و فکتوری، می‌توانیم اشیاء پیچیده‌تری را با منطق‌های مختلف ایجاد کنیم.</p>
<h3><span style="color: #d90000;"><strong>3. افزایش خوانایی و نگهداری کد</strong></span></h3>
<p>کلاس سازنده می‌تواند کد را خواناتر و قابل نگهداری‌تر کند، زیرا مقداردهی اولیه و منطق ایجاد اشیاء در یک مکان متمرکز شده است.</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #d90000;">مثال‌های عملی از کلاس سازنده در فلاتر</span></strong></h2>
<p>برای درک بهتر کلاس سازنده در دارت، به چند مثال عملی از استفاده آن در پروژه‌های فلاتر می‌پردازیم.</p>
<h3><span style="color: #d90000;"><strong>مثال 1: ایجاد ویجت‌های سفارشی</strong></span></h3>
<p>در فلاتر، می‌توانیم ویجت‌های سفارشی با کلاس سازنده ایجاد کنیم:</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<figure id="attachment_2454" aria-describedby="caption-attachment-2454" style="width: 761px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-2454" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-9-1-1.png" alt="ایجاد ویجت‌های سفارشی" width="761" height="730" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-9-1-1.png 761w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-9-1-1-300x288.png 300w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-9-1-1-600x576.png 600w" sizes="(max-width: 761px) 100vw, 761px" /><figcaption id="caption-attachment-2454" class="wp-caption-text">ایجاد ویجت‌های سفارشی</figcaption></figure>
<p>&nbsp;</p>
<div class="w-full text-token-text-primary" dir="auto" data-testid="conversation-turn-5" data-scroll-anchor="true">
<div class="py-2 juice:py-[18px] px-3 text-base md:px-4 m-auto md:px-5 lg:px-1 xl:px-5">
<div class="mx-auto flex flex-1 gap-3 text-base juice:gap-4 juice:md:gap-5 juice:lg:gap-6 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem]">
<div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn">
<div class="flex-col gap-1 md:gap-3">
<div class="flex flex-grow flex-col max-w-full">
<div class="min-h-[20px] text-message flex flex-col items-start whitespace-pre-wrap break-words [.text-message+&amp;]:mt-5 juice:w-full juice:items-end overflow-x-auto gap-2" dir="auto" data-message-author-role="assistant" data-message-id="facc22af-5612-4ca1-b02b-8a975676dd54">
<div class="flex w-full flex-col gap-1 juice:empty:hidden juice:first:pt-[3px]">
<div class="markdown prose w-full break-words dark:prose-invert light">
<h3><span style="color: #d90000;">مثال 2: مدیریت وضعیت با کلاس سازنده فکتوری</span></h3>
<p>در برنامه‌های پیچیده، ممکن است نیاز باشد تا وضعیت اشیاء را مدیریت کنیم. می‌توانیم از کلاس سازنده فکتوری برای این منظور استفاده کنیم:</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<figure id="attachment_2456" aria-describedby="caption-attachment-2456" style="width: 699px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-2456" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-10-1-1.png" alt="مدیریت وضعیت با کلاس سازنده فکتوری" width="699" height="618" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-10-1-1.png 699w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-10-1-1-300x265.png 300w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-10-1-1-600x530.png 600w" sizes="(max-width: 699px) 100vw, 699px" /><figcaption id="caption-attachment-2456" class="wp-caption-text">مدیریت وضعیت با کلاس سازنده فکتوری</figcaption></figure>
<p>&nbsp;</p>
<div class="w-full text-token-text-primary" dir="auto" data-testid="conversation-turn-5" data-scroll-anchor="true">
<div class="py-2 juice:py-[18px] px-3 text-base md:px-4 m-auto md:px-5 lg:px-1 xl:px-5">
<div class="mx-auto flex flex-1 gap-3 text-base juice:gap-4 juice:md:gap-5 juice:lg:gap-6 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem]">
<div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn">
<div class="flex-col gap-1 md:gap-3">
<div class="flex flex-grow flex-col max-w-full">
<div class="min-h-[20px] text-message flex flex-col items-start whitespace-pre-wrap break-words [.text-message+&amp;]:mt-5 juice:w-full juice:items-end overflow-x-auto gap-2" dir="auto" data-message-author-role="assistant" data-message-id="facc22af-5612-4ca1-b02b-8a975676dd54">
<div class="flex w-full flex-col gap-1 juice:empty:hidden juice:first:pt-[3px]">
<div class="markdown prose w-full break-words dark:prose-invert light">
<h3><span style="color: #d90000;"><strong>نتیجه‌گیری</strong></span></h3>
<p>کلاس سازنده یکی از اصول مهم و کاربردی در برنامه‌نویسی شی‌گرا است که در زبان دارت و فلاتر نقش مهمی ایفا می‌کند. با استفاده از کلاس سازنده، توسعه‌دهندگان می‌توانند اشیاء را به صورت مشخص و با مقادیر اولیه دلخواه ایجاد کنند. دوره فلاتر الماس با ارائه آموزش‌های جامع و کاربردی، یکی از بهترین منابع برای یادگیری این مفاهیم است. با تسلط بر اصول کلاس سازنده در دارت، می‌توانید پروژه‌های فلاتر خود را به سطح بالاتری از کیفیت و کارایی برسانید.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/constructors-in-dart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش زبان برنامه نویسی دارت &#8211; مفهوم ارث بری در دارت</title>
		<link>https://programmingshow.ir/inheritance-in-dart/</link>
					<comments>https://programmingshow.ir/inheritance-in-dart/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Sat, 22 Jun 2024 06:30:13 +0000</pubDate>
				<category><![CDATA[آموزش دارت]]></category>
		<category><![CDATA[آموزش رایگان]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=1530</guid>

					<description><![CDATA[در زبان دارت، ارث بری به توسعه‌دهندگان اجازه می‌دهد تا کلاس‌های جدیدی را از کلاس‌های موجود ایجاد کنند و اعضای آن‌ها (متدها و متغیرها) را به ارث ببرند.]]></description>
										<content:encoded><![CDATA[<iframe id='wp-aparat-6a8e5e8923bd0' src='https://www.aparat.com/video/video/embed/videohash/0lA3O/vt/frame' width='100%' allowfullscreen='true' class='aparat-frame aparat-full-frame'></iframe>
<p>&nbsp;</p>
<h2><span style="color: #e00000;"><strong>ارث بری در دارت</strong></span></h2>
<p><strong><a href="https://www.geeksforgeeks.org/dart-concept-of-inheritance/" target="_blank" rel="noopener">ارث بری</a></strong> یکی از اصول بنیادی برنامه‌نویسی شی‌گرا (OOP) است که به توسعه‌دهندگان امکان می‌دهد تا کلاس‌های جدیدی را از کلاس‌های موجود ایجاد کنند. این اصل به کاهش تکرار کد، افزایش قابلیت استفاده مجدد و تسهیل در نگهداری نرم‌افزار کمک می‌کند. در این مقاله، به بررسی مفهوم ارث بری در <a href="https://dart.dev/" target="_blank" rel="noopener">زبان دارت (Dart)</a> پرداخته و نحوه استفاده از آن را در پروژه‌های فلاتر (Flutter) توضیح خواهیم داد. همچنین به بررسی دوره فلاتر الماس که به آموزش این مفاهیم می‌پردازد، خواهیم پرداخت.</p>
<p>&nbsp;</p>
<h2><span style="color: #e00000;"><strong>شی‌گرایی و اصول آن</strong></span></h2>
<p>شی‌گرایی یک روش برنامه‌نویسی است که بر اساس مفاهیم <a href="https://www.geeksforgeeks.org/dart-classes-and-objects/#:~:text=Dart%20is%20an%20object%2Doriented,features%20like%20classes%20and%20interfaces." target="_blank" rel="noopener">اشیاء (Objects)</a> و <a href="https://dart.dev/language/classes" target="_blank" rel="noopener">کلاس‌ها (Classes)</a> بنا شده است. اصول چهارگانه شی‌گرایی شامل موارد زیر است:</p>
<ol>
<li><span style="color: #e00000;"><strong>کپسوله‌سازی (Encapsulation)</strong></span>: پنهان‌سازی جزئیات پیاده‌سازی و نمایش فقط آنچه برای استفاده از کلاس لازم است.</li>
<li><span style="color: #e00000;"><strong>وراثت (Inheritance)</strong></span>: ایجاد کلاس‌های جدید از کلاس‌های موجود برای به ارث بردن ویژگی‌ها و رفتارها.</li>
<li><span style="color: #e00000;"><strong>چندریختی (Polymorphism)</strong></span>: امکان استفاده از یک تابع یا عملگر به چندین شکل مختلف.</li>
<li><span style="color: #e00000;"><strong>ترکیب (Composition)</strong></span>: استفاده از اشیاء موجود به عنوان اعضای یک شیء جدید به جای ارث بری از آن‌ها.</li>
</ol>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #e00000;">ارث بری در دارت</span></strong></h2>
<p>در زبان دارت، ارث بری به توسعه‌دهندگان اجازه می‌دهد تا کلاس‌های جدیدی را از کلاس‌های موجود ایجاد کنند و اعضای آن‌ها (متدها و متغیرها) را به ارث ببرند. برای تعریف یک کلاس فرزند، از کلمه کلیدی <strong><code>extends</code></strong> استفاده می‌شود. در ادامه یک مثال ساده از ارث بری در دارت را مشاهده می‌کنیم:</p>
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"></div>
<p>&nbsp;</p>
<figure id="attachment_2440" aria-describedby="caption-attachment-2440" style="width: 665px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-2440" src="https://programmingshow.ir/wp-content/uploads/2024/05/carbon-2.png" alt="ارث بری در دارت" width="665" height="487" srcset="https://programmingshow.ir/wp-content/uploads/2024/05/carbon-2.png 665w, https://programmingshow.ir/wp-content/uploads/2024/05/carbon-2-300x220.png 300w, https://programmingshow.ir/wp-content/uploads/2024/05/carbon-2-600x439.png 600w" sizes="(max-width: 665px) 100vw, 665px" /><figcaption id="caption-attachment-2440" class="wp-caption-text">ارث بری در دارت</figcaption></figure>
<p>&nbsp;</p>
<p>در این مثال، کلاس <code>Dog</code> از کلاس <code>Animal</code> ارث بری کرده است. به این ترتیب، شیء <code>myDog</code> می‌تواند هم متد <code>eat</code> و هم متد <code>bark</code> را فراخوانی کند.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #e00000;">آموزش ارث بری در دارت</span></strong></h2>
<p>یادگیری مفاهیم ارث بری در دارت برای توسعه‌دهندگان فلاتر بسیار اهمیت دارد. درک درست این مفاهیم می‌تواند به توسعه نرم‌افزارهای پیچیده و کارآمد کمک کند. دوره فلاتر الماس یکی از منابع آموزشی معتبر است که به آموزش اصول برنامه‌نویسی شی‌گرا و ارث بری در دارت می‌پردازد.</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #e00000;">محتوای دوره فلاتر الماس</span></strong></h3>
<p><strong><a href="https://programmingshow.ir/product/diamond-flutter/">دوره فلاتر الماس</a></strong> به صورت جامع به آموزش فلاتر و دارت می‌پردازد و شامل مباحث متعددی از جمله ارث بری می‌باشد. در این دوره، مفاهیم ارث بری به صورت تئوری و عملی آموزش داده می‌شود و شرکت‌کنندگان با مثال‌های متعددی از دنیای واقعی روبرو می‌شوند.</p>
<p>برخی از مباحثی که در این دوره پوشش داده می‌شوند عبارتند از:</p>
<ul>
<li>معرفی و مبانی برنامه‌نویسی شی‌گرا</li>
<li>تعریف کلاس‌ها و اشیاء</li>
<li>اصول ارث بری و نحوه استفاده از آن</li>
<li>ارث بری چندگانه و مشکلات آن</li>
<li>روش‌های جلوگیری از ارث بری نامناسب</li>
</ul>
<p>&nbsp;</p>
<figure id="attachment_1859" aria-describedby="caption-attachment-1859" style="width: 192px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-1859" src="https://programmingshow.ir/wp-content/uploads/2023/10/dart-192.png" alt="لوگو زبان برنامه نویسی دارت" width="192" height="192" /><figcaption id="caption-attachment-1859" class="wp-caption-text">زبان برنامه نویسی دارت</figcaption></figure>
<p>&nbsp;</p>
<h2><span style="color: #e00000;">مزایای استفاده از ارث بری در دارت</span></h2>
<p>استفاده از ارث بری در دارت دارای مزایای متعددی است که برخی از آن‌ها عبارتند از:</p>
<h3><strong><span style="color: #e00000;">1. کاهش تکرار کد</span></strong></h3>
<p>با استفاده از ارث بری، می‌توان ویژگی‌ها و رفتارهای مشترک را در یک کلاس پایه تعریف کرد و کلاس‌های فرزند می‌توانند بدون نیاز به تکرار کد، این ویژگی‌ها و رفتارها را به ارث ببرند.</p>
<h3><strong><span style="color: #e00000;">2. افزایش قابلیت استفاده مجدد</span></strong></h3>
<p>کلاس‌های پایه می‌توانند در پروژه‌های مختلف مورد استفاده قرار گیرند و کلاس‌های جدیدی بر اساس آن‌ها ایجاد شوند، بدون نیاز به بازنویسی کد.</p>
<h3><span style="color: #e00000;"><strong>3. تسهیل نگهداری نرم‌افزار</strong></span></h3>
<p>با استفاده از ارث بری، تغییرات در کلاس پایه به طور خودکار در کلاس‌های فرزند منعکس می‌شود، که این امر باعث کاهش هزینه‌های نگهداری و به‌روزرسانی نرم‌افزار می‌شود.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong><span style="color: #e00000;">مثال‌های عملی از ارث بری در فلاتر</span></strong></h2>
<p>برای درک بهتر ارث بری در دارت، به چند مثال عملی از استفاده آن در پروژه‌های فلاتر می‌پردازیم.</p>
<p>&nbsp;</p>
<h3><strong><span style="color: #e00000;">مثال 1: ایجاد کلاس‌های ویجت سفارشی</span></strong></h3>
<p>در فلاتر، بسیاری از ویجت‌ها می‌توانند با استفاده از ارث بری سفارشی‌سازی شوند. به عنوان مثال، می‌توان یک ویجت دکمه سفارشی ایجاد کرد:</p>
<p>&nbsp;</p>
<figure id="attachment_2441" aria-describedby="caption-attachment-2441" style="width: 769px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-2441" src="https://programmingshow.ir/wp-content/uploads/2024/05/carbon-1-1.png" alt="ایجاد کلاس‌های ویجت سفارشی" width="769" height="730" srcset="https://programmingshow.ir/wp-content/uploads/2024/05/carbon-1-1.png 769w, https://programmingshow.ir/wp-content/uploads/2024/05/carbon-1-1-300x285.png 300w, https://programmingshow.ir/wp-content/uploads/2024/05/carbon-1-1-600x570.png 600w" sizes="(max-width: 769px) 100vw, 769px" /><figcaption id="caption-attachment-2441" class="wp-caption-text">ایجاد کلاس‌های ویجت سفارشی</figcaption></figure>
<p>&nbsp;</p>
<h3><strong><span style="color: #e00000;">مثال 2: ارث بری از کلاس‌های مدل داده</span></strong></h3>
<p>در برنامه‌های پیچیده، ممکن است نیاز باشد تا مدل‌های داده با استفاده از ارث بری توسعه داده شوند. به عنوان مثال، می‌توان یک مدل پایه کاربر ایجاد کرده و مدل‌های خاص‌تری از آن به ارث برد:</p>
<p>&nbsp;</p>
<div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium">
<figure id="attachment_2449" aria-describedby="caption-attachment-2449" style="width: 881px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-2449" src="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-6-1-1.png" alt="ارث بری از کلاس‌های مدل داده" width="881" height="506" srcset="https://programmingshow.ir/wp-content/uploads/2024/06/carbon-6-1-1.png 881w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-6-1-1-300x172.png 300w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-6-1-1-768x441.png 768w, https://programmingshow.ir/wp-content/uploads/2024/06/carbon-6-1-1-600x345.png 600w" sizes="(max-width: 881px) 100vw, 881px" /><figcaption id="caption-attachment-2449" class="wp-caption-text">ارث بری از کلاس‌های مدل داده</figcaption></figure>
</div>
<p>&nbsp;</p>
<h3><strong><span style="color: #e00000;">نتیجه‌گیری</span></strong></h3>
<p>ارث بری یکی از اصول مهم و کاربردی در برنامه‌نویسی شی‌گرا است که در زبان دارت و فلاتر نیز نقش مهمی ایفا می‌کند. با استفاده از ارث بری، توسعه‌دهندگان می‌توانند کدهای تمیزتر، قابل نگهداری‌تر و با قابلیت استفاده مجدد بیشتری بنویسند. دوره فلاتر الماس با ارائه آموزش‌های جامع و کاربردی، یکی از بهترین منابع برای یادگیری این مفاهیم است. با تسلط بر اصول ارث بری در دارت، می‌توانید پروژه‌های فلاتر خود را به سطح بالاتری از کیفیت و کارایی برسانید.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/inheritance-in-dart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>انتخاب آموزش زبان برنامه نویسی دارت – شئ گرایی در دارت قسمت ۲</title>
		<link>https://programmingshow.ir/dart-tutorial-20/</link>
					<comments>https://programmingshow.ir/dart-tutorial-20/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Tue, 31 Oct 2023 05:16:12 +0000</pubDate>
				<category><![CDATA[آموزش دارت]]></category>
		<category><![CDATA[آموزش رایگان]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=591</guid>

					<description><![CDATA[شئ گرایی یکی از اصول اساسی طراحی و توسعه نرم افزار است که در زبان برنامه نویسی دارت نیز قابل استفاده است. با استفاده از شئ گرایی در دارت، می توانید کلاس ها...]]></description>
										<content:encoded><![CDATA[<iframe id='wp-aparat-6a8e5e8924363' src='https://www.aparat.com/video/video/embed/videohash/c8VuB/vt/frame' width='100%' allowfullscreen='true' class='aparat-frame aparat-full-frame'></iframe>
<p><span style="font-size: 14pt;">شئ گرایی یکی از اصول اساسی طراحی و توسعه نرم افزار است که در زبان برنامه نویسی دارت نیز قابل استفاده است. با استفاده از <a href="https://programmingshow.ir/dart-tutorial-19/" target="_blank" rel="noopener">شئ گرایی در دارت</a>، می توانید کلاس ها، شیء ها و رابط های مختلف را تعریف کنید و از آنها برای ساختاردهی به برنامه خود استفاده کنید.</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;">به عنوان مثال، در دارت می توانید یک کلاس تعریف کنید که شامل ویژگی ها و روش هایی باشد که برای یک شیء خاص مورد استفاده قرار می گیرد. با استفاده از این کلاس، می توانید شیء های مختلفی از آن ایجاد کنید و از آنها برای انجام عملیات های مختلف استفاده کنید.</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;">همچنین، در دارت می توانید از رابط ها برای تعریف قراردادهایی که باید توسط کلاس های مختلف پیاده سازی شوند استفاده کنید. با استفاده از این رابط ها، می توانید اطمینان حاصل کنید که همه کلاس هایی که از یک رابط پیاده سازی می کنند، قراردادهای مشابهی را دارند و برنامه شما به درستی کار خواهد کرد.</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;">در کل، شئ گرایی در زبان برنامه نویسی دارت به شما کمک می کند تا برنامه هایی را با ساختار منظم و قابل توسعه طراحی کنید و به راحتی می توانید آنها را توسعه دهید.</span></p>
<p>&nbsp;</p>
<p style="text-align: center;">
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/dart-tutorial-20/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش زبان برنامه نویسی دارت – شئ گرایی در دارت</title>
		<link>https://programmingshow.ir/dart-tutorial-19/</link>
					<comments>https://programmingshow.ir/dart-tutorial-19/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Thu, 26 Oct 2023 06:03:49 +0000</pubDate>
				<category><![CDATA[آموزش دارت]]></category>
		<category><![CDATA[آموزش رایگان]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=540</guid>

					<description><![CDATA[شئ گرایی یک الگوی برنامه نویسی است که بر اساس آن، برنامه به صورت اشیاء تعریف می‌شود. هر شیء دارای ویژگی‌ها و رفتارهای خاصی است که می‌تواند به طور مستقل عمل...]]></description>
										<content:encoded><![CDATA[<iframe id='wp-aparat-6a8e5e89245f2' src='https://www.aparat.com/video/video/embed/videohash/uI7ov/vt/frame' width='100%' allowfullscreen='true' class='aparat-frame aparat-full-frame'></iframe>
<p><span style="font-size: 14pt;">دارت یکی از زبان‌های برنامه نویسی مدرن است که توسط گوگل توسعه داده شده است. این زبان از جاوااسکریپت الهام گرفته و برای توسعه برنامه‌های وب و موبایل استفاده می‌شود. یکی از ویژگی‌های جالب دارت، شئ گرایی قوی آن است.</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;">شئ گرایی یک الگوی <a href="https://fa.wikipedia.org/wiki/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%E2%80%8C%D8%A7%DB%8C" target="_blank" rel="noopener">برنامه نویسی</a> است که بر اساس آن، برنامه به صورت اشیاء تعریف می‌شود. هر شیء دارای ویژگی‌ها و رفتارهای خاصی است که می‌تواند به طور مستقل عمل کند. در دارت، می‌توانید کلاس‌ها و شیء‌ها را تعریف کنید و از آن‌ها برای ساختاردهی به برنامه خود استفاده کنید.</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;">استفاده از شئ گرایی در دارت، به برنامه نویسان امکان می‌دهد تا کدهای قابل استفاده مجدد و قابل خواندن را بسازند. با تعریف کلاس‌ها و شیء‌ها، می‌توانید ویژگی‌ها و رفتارهای مرتبط را در یک مکان تعریف کنید و از آن‌ها در سراسر برنامه استفاده کنید. این باعث می‌شود که کد شما سازماندهی شده تر و قابلیت توسعه و نگهداری بیشتری داشته باشد.</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;">برای تعریف یک کلاس در دارت، از کلیدواژه class استفاده می‌کنیم. سپس ویژگی‌ها و رفتارهای مرتبط را درون آن تعریف می‌کنیم. به عنوان مثال، فرض کنید یک کلاس به نام Person را تعریف کرده‌ایم که دارای ویژگی‌های name و age است. می‌توانیم رفتارهای مرتبط با این کلاس را همچون تغییر نام و نمایش اطلاعات را درون آن تعریف کنیم.</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;">با تعریف یک شیء از کلاس Person، می‌توانیم از ویژگی‌ها و رفتارهای تعریف شده درون آن استفاده کنیم. به عنوان مثال، می‌توانیم نام یک شخص را تغییر دهیم یا اطلاعات آن را نمایش دهیم. این قابلیت به برنامه نویسان امکان می‌دهد تا برنامه‌های پیچیده‌تری را با ساختاری ساده‌تر بنویسند.</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;">استفاده از شئ گرایی در دارت، به برنامه نویسان امکان می‌دهد تا کدهای قابل استفاده مجدد و قابل خواندن را بسازند. با تعریف کلاس‌ها و شیء‌ها، می‌توانید ویژگی‌ها و رفتارهای مرتبط را در یک مکان تعریف کنید و از آن‌ها در سراسر برنامه استفاده کنید. این باعث می‌شود که کد شما سازماندهی شده تر و قابلیت توسعه و نگهداری بیشتری داشته باشد.</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;">در نهایت، استفاده از شئ گرایی در دارت به برنامه نویسان امکان می‌دهد تا برنامه‌هایی با ساختار مناسب و کد قابل خواندن بنویسند. با استفاده از کلاس‌ها و شیء‌ها، می‌توانید کدهای قابل استفاده مجدد و قابل توسعه‌تری را تولید کنید. اگر شما هم به دنبال یک <a href="https://programmingshow.ir/" target="_blank" rel="noopener">زبان برنامه نویسی</a> با شئ گرایی قوی هستید، دارت یک گزینه عالی است.</span></p>
<p>&nbsp;</p>
<p style="text-align: center;">
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/dart-tutorial-19/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش زبان برنامه نویسی دارت – کلمات کلیدی مهم در دارت</title>
		<link>https://programmingshow.ir/imporatent-keyword-in-dart/</link>
					<comments>https://programmingshow.ir/imporatent-keyword-in-dart/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Wed, 25 Oct 2023 06:03:59 +0000</pubDate>
				<category><![CDATA[آموزش دارت]]></category>
		<category><![CDATA[آموزش رایگان]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=537</guid>

					<description><![CDATA[در قسمت 18 از اموزش زبان برنامه نویسی دارت میخوام با کلمات کلیدی مهم در دارت آشنا بشیم. پس با من همراه باشید....]]></description>
										<content:encoded><![CDATA[<p style="text-align: center;"><iframe id='wp-aparat-6a8e5e8924930' src='https://www.aparat.com/video/video/embed/videohash/reocY/vt/frame' width='100%' allowfullscreen='true' class='aparat-frame aparat-full-frame'></iframe></p>
<div dir="rtl">
<h2 data-sourcepos="1:1-1:40">کلمات کلیدی مهم در دارت</h2>
<p data-sourcepos="3:1-3:178">کلمات کلیدی در دارت، کلمات رزرو شده‌ای هستند که برای ساختار و عملکرد زبان برنامه‌نویسی استفاده می‌شوند. آنها به شما کمک می‌کنند تا برنامه‌های خود را به طور صحیح و کارآمد بنویسید.</p>
<h3 data-sourcepos="5:1-5:22">انواع کلمات کلیدی مهم در دارت:</h3>
<ul data-sourcepos="7:1-12:0">
<li data-sourcepos="7:1-7:107">
<h4>کلمات کلیدی اعلامی:</h4>
<p>برای تعریف متغیرها، توابع، کلاس‌ها و سایر ساختارهای برنامه‌نویسی استفاده می‌شوند.</li>
<li data-sourcepos="8:1-8:97">
<h4>کلمات کلیدی کنترلی:</h4>
<p>برای کنترل جریان برنامه، مانند دستورات if، for و while استفاده می‌شوند.</li>
<li data-sourcepos="9:1-9:96">
<h4>کلمات کلیدی دستوری:</h4>
<p>برای انجام عملیات خاص، مانند return، break و continue استفاده می‌شوند.</li>
<li data-sourcepos="10:1-10:69">
<h4>کلمات کلیدی اشیاء:</h4>
<p>برای کار با اشیاء و کلاس‌ها استفاده می‌شوند.</li>
<li data-sourcepos="11:1-12:0">
<h4>کلمات کلیدی کتابخانه:</h4>
<p>برای دسترسی به توابع و کلاس‌های کتابخانه‌های استاندارد دارت استفاده می‌شوند.</li>
</ul>
<h3 data-sourcepos="13:1-13:41">برخی از مهم‌ترین کلمات کلیدی در دارت:</h3>
<ul data-sourcepos="15:1-31:0">
<li data-sourcepos="15:1-15:60"><strong>var</strong>: برای تعریف متغیر با استنباط نوع استفاده می‌شود.</li>
<li data-sourcepos="16:1-16:61"><strong>final</strong>: برای تعریف متغیر با مقدار ثابت استفاده می‌شود.</li>
<li data-sourcepos="17:1-17:77"><strong>const</strong>: برای تعریف متغیر با مقدار ثابت در زمان کامپایل استفاده می‌شود.</li>
<li data-sourcepos="18:1-18:49"><strong>function</strong>: برای تعریف تابع استفاده می‌شود.</li>
<li data-sourcepos="19:1-19:46"><strong>class</strong>: برای تعریف کلاس استفاده می‌شود.</li>
<li data-sourcepos="20:1-20:54"><strong>if</strong>: برای اجرای کد به طور مشروط استفاده می‌شود.</li>
<li data-sourcepos="21:1-21:50"><strong>for</strong>: برای تکرار یک بلوک کد استفاده می‌شود.</li>
<li data-sourcepos="22:1-22:81"><strong>while</strong>: برای تکرار یک بلوک کد تا زمانی که شرطی برقرار باشد استفاده می‌شود.</li>
<li data-sourcepos="23:1-23:64"><strong>return</strong>: برای بازگرداندن مقدار از یک تابع استفاده می‌شود.</li>
<li data-sourcepos="24:1-24:51"><strong>break</strong>: برای خروج از یک حلقه استفاده می‌شود.</li>
<li data-sourcepos="25:1-25:65"><strong>continue</strong>: برای رفتن به تکرار بعدی یک حلقه استفاده می‌شود.</li>
<li data-sourcepos="26:1-26:59"><strong>new</strong>: برای ایجاد یک نمونه از یک کلاس استفاده می‌شود.</li>
<li data-sourcepos="27:1-27:61"><strong>super</strong>: برای دسترسی به اعضای کلاس پایه استفاده می‌شود.</li>
<li data-sourcepos="28:1-28:52"><strong>this</strong>: برای اشاره به شیء فعلی استفاده می‌شود.</li>
<li data-sourcepos="29:1-29:69"><strong>import</strong>: برای وارد کردن کتابخانه‌ها و ماژول‌ها استفاده می‌شود.</li>
<li data-sourcepos="30:1-31:0"><strong>as</strong>: برای ایجاد نام مستعار برای کتابخانه‌ها یا کلاس‌ها استفاده می‌شود.</li>
</ul>
<p data-sourcepos="32:1-32:9">نکات:</p>
<ul data-sourcepos="34:1-37:0">
<li data-sourcepos="34:1-34:43">کلمات کلیدی باید به حروف کوچک نوشته شوند.</li>
<li data-sourcepos="35:1-35:74">نمی‌توانید از کلمات کلیدی به عنوان نام متغیر، تابع یا کلاس استفاده کنید.</li>
<li data-sourcepos="36:1-37:0">لیست کاملی از کلمات کلیدی دارت را می‌توانید در <a href="https://dart.dev/guides" target="_blank" rel="noopener noreferrer">مستندات رسمی دارت</a> پیدا کنید.</li>
</ul>
<p data-sourcepos="38:1-38:9">مثال:</p>
<div>
<div></div>
<div>
<pre dir="ltr">// تعریف متغیر با استفاده از کلمه کلیدی "var"
var message = "سلام به دنیای برنامه‌نویسی با دارت!";

// تعریف تابع با استفاده از کلمه کلیدی "function"
function greetUser(String name) {
  print("سلام $name!");
}

// استفاده از کلمه کلیدی "if" برای اجرای کد به طور مشروط
if (message.contains("دارت")) {
  print("کلمه 'دارت' در جمله '$message' یافت شد");
}

// استفاده از کلمه کلیدی "for" برای تکرار یک بلوک کد
for (int i = 0; i &lt; 5; i++) {
  print("شماره $i");
}

// استفاده از کلمه کلیدی "new" برای ایجاد یک نمونه از کلاس
class Person {
  String name;
  int age;

  Person(this.name, this.age);
}

Person person1 = new Person("علی", 25);
print("نام: ${person1.name}, سن: ${person1.age}");
</pre>
</div>
</div>
<p dir="ltr" data-sourcepos="71:1-71:44">
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/imporatent-keyword-in-dart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش زبان برنامه نویسی دارت – مفهوم نال سیفتی (Null Safety) در دارت</title>
		<link>https://programmingshow.ir/null-safety-in-dart/</link>
					<comments>https://programmingshow.ir/null-safety-in-dart/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Tue, 24 Oct 2023 06:01:01 +0000</pubDate>
				<category><![CDATA[آموزش دارت]]></category>
		<category><![CDATA[آموزش رایگان]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=533</guid>

					<description><![CDATA[در زبان برنامه نویسی دارت، مفهوم نال یکی از مفاهیم اساسی است که برای مدیریت مقادیر خالی یا نامعتبر در برنامه ها استفاده می شود. در این مقاله به توضیح مفهوم...]]></description>
										<content:encoded><![CDATA[<p>در <a href="https://fa.wikipedia.org/wiki/%D8%AF%D8%A7%D8%B1%D8%AA_(%D8%B2%D8%A8%D8%A7%D9%86_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C)" target="_blank" rel="noopener">زبان برنامه نویسی دارت</a>، مفهوم null یکی از مفاهیم اساسی است که برای مدیریت مقادیر خالی یا نامعتبر در برنامه ها استفاده می شود. در این مقاله به توضیح مفهوم null در دارت و کاربردهای آن خواهیم پرداخت.</p>
<p>&nbsp;</p>
<p>Null به معنای خالی یا نامعتبر است و برای نشان دادن عدم وجود یک مقدار صحیح در یک متغیر استفاده می شود. به عبارت دیگر، وقتی متغیری null است، به این معنی است که هیچ مقداری به آن اختصاص داده نشده است.</p>
<p>&nbsp;</p>
<p>یکی از کاربردهای اصلی null در دارت، بررسی مقادیر <a href="https://programmingshow.ir/dart-tutorial-2/" target="_blank" rel="noopener">متغیرها</a> می باشد. با استفاده از null می توانیم بررسی کنیم که آیا یک متغیر دارای مقدار است یا خیر. به عنوان مثال، اگر یک متغیری null باشد، می توانیم بررسی کنیم که آیا مقدار آن null است یا نه. این عملکرد می تواند در برنامه هایی که باید با مقادیر خالی یا نامعتبر مواجه شوند، مفید باشد.</p>
<p>&nbsp;</p>
<p>همچنین، null به عنوان یک مقدار پیش فرض برای متغیرها نیز استفاده می شود. در برخی مواقع، ممکن است بخواهیم یک متغیر را با یک مقدار خالی مقداردهی کنیم. در این صورت می توانیم از null به عنوان مقدار پیش فرض استفاده کنیم تا بعداً مقدار صحیحی به آن اختصاص دهیم.</p>
<p>&nbsp;</p>
<div dir="rtl">
<h2 data-sourcepos="1:1-1:40">مفهوم نال سیفتی(Null Safety)</h2>
<p data-sourcepos="3:1-3:153">نال سیفتی (Null Safety) در دارت، قابلیتی است که به شما کمک می‌کند تا از اشکالات ناشی از مقادیر نال در برنامه‌هایتان جلوگیری کنید. مقادیر نال، مقادیری هستند که هیچ مقداری به آنها اختصاص داده نشده است.</p>
<p data-sourcepos="5:1-5:15">مشکلات نال:</p>
<p data-sourcepos="7:1-7:130">قبل از نال سیفتی (Null Safety)، مقادیر نال می‌توانستند در هر جایی از برنامه شما ظاهر شوند و منجر به خطاهای غیرمنتظره و رفتار غیرقابل پیش‌بینی شوند. این امر اشکال‌زدایی و نگهداری کد را دشوار می‌کرد.</p>
<h2 data-sourcepos="9:1-9:23">مزایای نال سیفتی (Null Safety)</h2>
<ul data-sourcepos="11:1-12:111">
<li data-sourcepos="11:1-11:130"><strong>کاهش خطا</strong>: نال سیفتی (Null Safety) به طور خودکار بسیاری از خطاهای ناشی از مقادیر نال را در زمان کامپایل شناسایی و از آنها جلوگیری می‌کند.</li>
<li data-sourcepos="12:1-12:111"><strong>کد قابل اعتمادتر</strong>: نال سیفتی (Null Safety) به شما کمک می‌کند تا کد قابل اعتمادتر و قوی‌تری بنویسید که کمتر در معرض خطا و خرابی است.</li>
<li data-sourcepos="13:1-14:0"><strong>خوانایی بهتر</strong>: نال سیفتی (Null Safety) کد شما را خواناتر و قابل فهم‌تر می‌کند، زیرا به وضوح مشخص می‌کند که کدام متغیرها می‌توانند مقادیر نال داشته باشند.</li>
</ul>
<h2 data-sourcepos="15:1-15:25">نحوه کار نال سیفتی (Null Safety)</h2>
<p data-sourcepos="17:1-17:121">نال سیفتی (Null Safety) با استفاده از سیستم نوع‌دهی برای ردیابی اینکه کدام متغیرها می‌توانند مقادیر نال داشته باشند، کار می‌کند.</p>
<ul data-sourcepos="19:1-23:88">
<li data-sourcepos="19:1-21:24"><strong>انواع نال‌پذیر</strong>: متغیرهایی که می‌توانند مقادیر نال داشته باشند را با علامت سوال (?) در انتهای نوع داده آنها مشخص می‌کنید. مثال: String? name;</li>
<li data-sourcepos="22:1-23:88"><strong>غیرقابل‌دسترسی به مقادیر نال</strong>: اگر سعی کنید به یک متغیر نال‌پذیر بدون بررسی نال بودن آن دسترسی داشته باشید، کامپایلر خطا می‌دهد.</li>
<li data-sourcepos="24:1-26:0"><strong>اپراتورهای جدید</strong>: نال سیفتی (Null Safety) اپراتورهای جدیدی مانند ! و ?. را برای بررسی نال بودن و دسترسی ایمن به مقادیر نال‌پذیر معرفی می‌کند.</li>
</ul>
<p data-sourcepos="27:1-27:9">مثال:</p>
<p data-sourcepos="29:1-29:101">فرض کنید می‌خواهید نام کاربری را از کاربر دریافت کنید و آن را در متغیری به نام username ذخیره کنید:</p>
<h3 data-sourcepos="31:1-31:23">قبل از نال سیفتی (Null Safety):</h3>
<div>
<div></div>
<div>
<pre dir="ltr">String username = stdin.readLineSync()!;

// ...

print("نام کاربری شما: $username");
</pre>
</div>
</div>
<p data-sourcepos="41:1-41:153">در این کد، متغیر username بدون بررسی نال بودن مقدار ورودی کاربر، به آن مقداردهی می‌شود. این امر می‌تواند منجر به خطا شود اگر کاربر هیچ ورودی وارد نکند.</p>
<h3 data-sourcepos="43:1-43:19">با نال سیفتی (Null Safety)</h3>
<div>
<div></div>
<div>
<pre dir="ltr">String? username = stdin.readLineSync();

if (username != null) {
  // ...

  print("نام کاربری شما: $username");
} else {
  print("هیچ نام کاربری وارد نشده است");
}
</pre>
</div>
</div>
<p data-sourcepos="57:1-57:211">در این کد، متغیر username به عنوان null-nullable تعریف شده است و قبل از استفاده از آن، با استفاده از اپراتور != null بررسی می‌شود. اگر username نال باشد، پیام &#8220;هیچ نام کاربری وارد نشده است&#8221; چاپ می‌شود.</p>
<p data-sourcepos="65:1-65:9">نکات:</p>
<ul data-sourcepos="67:1-70:0">
<li data-sourcepos="67:1-67:61">نال سیفتی (Null Safety) به طور پیش فرض در پروژه‌های جدید دارت فعال است.</li>
<li data-sourcepos="68:1-68:128">می‌توانید برای پروژه‌های موجود خود نیز نال سیفتی (Null Safety) را فعال کنید، اما ممکن است نیاز به انجام برخی تغییرات در کدتان داشته باشید.</li>
<li data-sourcepos="69:1-70:0">اگر از نال سیفتی (Null Safety) استفاده می‌کنید، حتماً از اپراتورهای جدید و تکنیک‌های بررسی نال برای جلوگیری از خطاها استفاده کنید.</li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/null-safety-in-dart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش زبان برنامه نویسی دارت – انواع تابع در دارت</title>
		<link>https://programmingshow.ir/types-of-functions-in-dart/</link>
					<comments>https://programmingshow.ir/types-of-functions-in-dart/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Mon, 23 Oct 2023 07:17:41 +0000</pubDate>
				<category><![CDATA[آموزش دارت]]></category>
		<category><![CDATA[آموزش رایگان]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=529</guid>

					<description><![CDATA[توابع، یکی از مفاهیم اساسی در زبان برنامه نویسی دارت نیز هستند. در این مقاله، به بررسی انواع توابع در زبان برنامه نویسی دارت می‌پردازیم...]]></description>
										<content:encoded><![CDATA[<p style="text-align: center;"><iframe id='wp-aparat-6a8e5e8925085' src='https://www.aparat.com/video/video/embed/videohash/aRptF/vt/frame' width='100%' allowfullscreen='true' class='aparat-frame aparat-full-frame'></iframe></p>
<p>مطمئناً هر کسی که به برنامه نویسی علاقه‌مند است، با مفهوم توابع آشنا است. توابع، یکی از مفاهیم اساسی در زبان برنامه نویسی دارت نیز هستند. در این مقاله، به بررسی انواع توابع در زبان برنامه نویسی Dart می‌پردازیم.</p>
<p>&nbsp;</p>
<p>توابع در <a href="https://programmingshow.ir/product/diamond-flutter/" target="_blank" rel="noopener">دارت</a> می‌توانند به دو شکل تعریف شوند: توابع بدون نوع و توابع با نوع. توابع بدون نوع، توابعی هستند که نوع داده‌ای را برگرداننده خود تعیین نمی‌کنند. به عبارت دیگر، نوع مقداری که تابع برمی‌گرداند، به صورت ضمنی تعیین می‌شود. در مقابل، توابع با نوع نوع مقدار برگردانده شده را به صورت صریح مشخص می‌کنند.</p>
<p>&nbsp;</p>
<p>در زبان برنامه نویسی دارت، توابع می‌توانند پارامترهای ورودی داشته باشند. این پارامترها می‌توانند به عنوان ورودی‌های تابع عمل کنند و مقادیری را دریافت کنند. از طریق این پارامترها، می‌توان اطلاعات را به تابع منتقل کرد و در داخل تابع به آن‌ها دسترسی داشت.</p>
<p>&nbsp;</p>
<p>توابع در دارت می‌توانند به عنوان پارامتری برای توابع دیگر نیز استفاده شوند. این مفهوم به نام توابع بازگشتی (Recursive Functions) شناخته می‌شود. در توابع بازگشتی، تابع خود را فراخوانی می‌کند و اجازه می‌دهد تا تابع به صورت مکرر اجرا شود. این روش می‌تواند در حل مسائل با ساختار تکراری و تعاملی بسیار مفید باشد.</p>
<p>&nbsp;</p>
<div dir="rtl">
<h2 data-sourcepos="1:1-1:36">انواع تابع در دارت</h2>
<p data-sourcepos="3:1-3:77">در دارت، توابع به انواع مختلفی دسته‌بندی می‌شوند که هر کدام کاربرد خاص خود را دارند. آشنایی با این انواع به شما کمک می‌کند تا از توابع به طور کارآمدتر و موثرتر در برنامه‌های خود استفاده کنید.</p>
<h3 data-sourcepos="5:1-5:25">تابع بدون بازگشت:</h3>
<p data-sourcepos="7:1-7:90">این تابع در دارت هیچ مقداری را به عنوان نتیجه عملیات خود باز نمی‌گردانند و فقط برای انجام عملیاتی مانند چاپ متن یا تغییر متغیرها استفاده می‌شوند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function printMessage() {
  print("پیام از تابع بدون بازگشت");
}

// فراخوانی تابع
printMessage(); // "پیام از تابع بدون بازگشت" چاپ می‌شود
</pre>
</div>
</div>
<h3 data-sourcepos="18:1-18:23">تابع با بازگشت:</h3>
<p data-sourcepos="20:1-20:158">این تابع در دارت یک مقدار را به عنوان نتیجه عملیات خود باز می‌گردانند. نوع داده‌ای مقدار بازگشتی باید با نوع داده‌ای که در تعریف تابع مشخص شده است مطابقت داشته باشد.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function calculateSum(int num1, int num2) {
  return num1 + num2;
}

// فراخوانی تابع و ذخیره نتیجه در متغیر
int sum = calculateSum(10, 5);
print("مجموع: $sum"); // "مجموع: 15" چاپ می‌شود
</pre>
</div>
</div>
<h3 data-sourcepos="32:1-32:26">تابع بدون پارامتر:</h3>
<p data-sourcepos="34:1-34:105">این تابع در دارت هیچ پارامتری را دریافت نمی‌کنند و از مقادیر پیش‌فرض یا متغیرهای سراسری استفاده می‌کنند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function greet() {
  print("سلام از تابع بدون پارامتر!");
}

// فراخوانی تابع
greet(); // "سلام از تابع بدون پارامتر!" چاپ می‌شود
</pre>
</div>
</div>
<h3 data-sourcepos="45:1-45:34">تابع با پارامترهای اجباری:</h3>
<p data-sourcepos="47:1-47:128">این تابع در دارت باید هنگام فراخوانی، پارامترهای مورد نیاز را دریافت کنند. عدم ارسال پارامترها برای این نوع توابع خطا ایجاد می‌کند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function calculateArea(double length, double width) {
  return length * width;
}

// فراخوانی تابع با ارسال پارامترهای لازم
double rectangleArea = calculateArea(5.0, 3.0);
print("مساحت مستطیل: $rectangleArea"); // "مساحت مستطیل: 15.0" چاپ می‌شود

// خطا: عدم ارسال پارامتر width
// calculateArea(5.0);
</pre>
</div>
</div>
<h3 data-sourcepos="62:1-62:35">توابع با پارامترهای اختیاری:</h3>
<p data-sourcepos="64:1-64:148">این تابع در دارت می‌توانند هنگام فراخوانی، پارامترهای اختیاری را دریافت کنند. اگر پارامترهای اختیاری ارسال نشوند، از مقادیر پیش‌فرض استفاده می‌شود.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function greetUser([String name = "کاربر پیش‌فرض"]) {
  print("سلام $name به دنیای برنامه‌نویسی با دارت!");
}

// فراخوانی تابع با نام کاربر
greetUser("علی"); // "سلام علی به دنیای برنامه‌نویسی با دارت!" چاپ می‌شود

// فراخوانی تابع بدون ارسال نام
greetUser(); // "سلام کاربر پیش‌فرض به دنیای برنامه‌نویسی با دارت!" چاپ می‌شود
</pre>
</div>
</div>
<h3 data-sourcepos="78:1-78:29">توابع با نامگذاری شده:</h3>
<p data-sourcepos="80:1-80:94">در این تابع در دارت، آرگومان‌ها با نام به آنها مقدار داده می‌شود، که خوانایی کد را افزایش می‌دهد.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function calculateRectangleArea(double length, {double width = 5.0}) {
  return length * width;
}

// فراخوانی تابع با ارسال نام پارامترها
double area = calculateRectangleArea(length: 10.0, width: 2.0);
print("مساحت مستطیل: $area"); // "مساحت مستطیل: 20.0" چاپ می‌شود

// فراخوانی تابع با ارسال نام فقط یک پارامتر (width پیش‌فرض استفاده می‌شود)
double anotherArea = calculateRectangleArea(length: 15.0);
print("مساحت مستطیل دیگر: $anotherArea"); // "مساحت مستطیل دیگر: 75.0" چاپ می‌شود
</pre>
</div>
</div>
<h3 data-sourcepos="96:1-96:22">توابع تو در تو:</h3>
<p data-sourcepos="98:1-98:120">تابعی که در داخل تابع دیگری تعریف شده است. توابع تو در تو می‌توانند به متغیرهای محلی تابع بیرونی دسترسی داشته باشند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function outerFunction() {
  int outerVariable = 10;

  function innerFunction() {
    print("متغیر محلی تابع بیرونی: $outerVariable");
  }

  innerFunction();
}

// فراخوانی
</pre>
</div>
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/types-of-functions-in-dart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش زبان برنامه نویسی دارت – تمرین با توابع در دارت</title>
		<link>https://programmingshow.ir/fuction-practice-in-dart/</link>
					<comments>https://programmingshow.ir/fuction-practice-in-dart/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Sun, 22 Oct 2023 08:13:17 +0000</pubDate>
				<category><![CDATA[آموزش دارت]]></category>
		<category><![CDATA[آموزش رایگان]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=526</guid>

					<description><![CDATA[با سلام به همه دوستان توی این پست آموزش زبان برنامه نویسی دارت قصد داریم تا با توابع که در قسمت قبل آشنا شدیم تمرین کنیم...]]></description>
										<content:encoded><![CDATA[<p style="text-align: center;"><iframe id='wp-aparat-6a8e5e8925482' src='https://www.aparat.com/video/video/embed/videohash/5Hxgw/vt/frame' width='100%' allowfullscreen='true' class='aparat-frame aparat-full-frame'></iframe></p>
<div dir="rtl">
<h2 data-sourcepos="1:1-1:47">10 تمرین برنامه نویسی با تابع در دارت:</h2>
<h3 data-sourcepos="3:1-3:23">1. تابع خوشامدگویی:</h3>
<p data-sourcepos="5:1-5:85">تابعی بنویسید که نام کاربر را به عنوان ورودی دریافت کند و جمله خوشامدگویی را چاپ کند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function greetUser(String name) {
  print("سلام $name به دنیای برنامه‌نویسی با دارت!");
}

// فراخوانی تابع با نام کاربر دلخواه
greetUser("علی"); // "سلام علی به دنیای برنامه‌نویسی با دارت!" چاپ می‌شود
</pre>
</div>
</div>
<h3 data-sourcepos="16:1-16:24">2. تابع محاسبه توان:</h3>
<p data-sourcepos="18:1-18:91">تابعی بنویسید که پایه و توان را به عنوان ورودی دریافت کند و حاصل توان را محاسبه و برگرداند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function calculatePower(int base, int exponent) {
  int result = 1;
  for (int i = 0; i &lt; exponent; i++) {
    result *= base;
  }
  return result;
}

// فراخوانی تابع و ذخیره نتیجه در متغیر
int powerResult = calculatePower(2, 5);
print("$powerResult"); // 32 چاپ می‌شود
</pre>
</div>
</div>
<h3 data-sourcepos="34:1-34:34">3. تابع بررسی زوج یا فرد بودن:</h3>
<p data-sourcepos="36:1-36:94">تابعی بنویسید که یک عدد را به عنوان ورودی دریافت کند و بررسی کند که آیا آن عدد زوج است یا فرد.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function checkEvenOrOdd(int number) {
  if (number % 2 == 0) {
    print("$number زوج است");
  } else {
    print("$number فرد است");
  }
}

// فراخوانی تابع با اعداد مختلف
checkEvenOrOdd(10); // "10 زوج است" چاپ می‌شود
checkEvenOrOdd(15); // "15 فرد است" چاپ می‌شود
</pre>
</div>
</div>
<h3 data-sourcepos="52:1-52:41">4. تابع تبدیل سانتی‌گراد به فارنهایت:</h3>
<p data-sourcepos="54:1-54:57">تابعی بنویسید که دمای سانتی‌گراد را به عنوان ورودی دریافت کند و معادل آن را در فارنهایت برگرداند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function celsiusToFahrenheit(double celsius) {
  return (celsius * 9/5) + 32;
}

// فراخوانی تابع و ذخیره نتیجه در متغیر
double fahrenheitTemperature = celsiusToFahrenheit(20.0);
print("$fahrenheitTemperature درجه فارنهایت"); // 68.0 درجه فارنهایت چاپ می‌شود
</pre>
</div>
</div>
<h3 data-sourcepos="66:1-66:31">5. تابع محاسبه مساحت دایره:</h3>
<p data-sourcepos="68:1-68:89">تابعی بنویسید که شعاع دایره را به عنوان ورودی دریافت کند و مساحت آن را محاسبه و برگرداند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function calculateCircleArea(double radius) {
  return pi * radius * radius;
}

// فراخوانی تابع و ذخیره نتیجه در متغیر
double circleArea = calculateCircleArea(5.0);
print("مساحت دایره: $circleArea"); // 78.53975 چاپ می‌شود
</pre>
</div>
</div>
<h3 data-sourcepos="80:1-80:4">6. تابع یافتن بزرگترین عدد در یک آرایه:</h3>
<p data-sourcepos="82:1-82:108">تابعی بنویسید که یک آرایه از اعداد را به عنوان ورودی دریافت کند و بزرگترین عدد را در آن پیدا کند و برگرداند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">function findLargestNumber(List&lt;int&gt; numbers) {
  int largest = numbers[0];
  for (int number in numbers) {
    if (number &gt; largest) {
      largest = number;
    }
  }
  return largest;
}

// فراخوانی تابع و ذخیره نتیجه در متغیر
List&lt;int&gt; myNumbers = [5, 2, 4, 1, 3];
int largestNumber = findLargestNumber(myNumbers);
print("بزرگترین عدد در آرایه: $largestNumber"); // 5 چاپ می‌شود
</pre>
</div>
</div>
<h3>7. تابع بررسی وجود حرف در یک رشته:</h3>
<p data-sourcepos="103:1-103:114">تابعی بنویسید که یک رشته و یک حرف را به عنوان ورودی دریافت کند و بررسی کند که آیا آن حرف در رشته وجود دارد یا خیر.</p>
<div>
<p dir="ltr">function checkCharacterInString(String str, String character) {<br />
if (str.contains(character)) {<br />
print(&#8220;حرف &#8216;$character&#8217; در رشته &#8216;$str&#8217; وجود دارد&#8221;);<br />
} else {<br />
print(&#8220;حرف &#8216;$character&#8217; در رشته &#8216;$str&#8217; وجود ندارد&#8221;);<br />
}<br />
}</p>
<p dir="ltr">// فراخوانی تابع با رشته و حروف مختلف<br />
checkCharacterInString(&#8220;سلام&#8221;, &#8220;ا&#8221;); // &#8220;حرف &#8216;ا&#8217; در رشته &#8216;سلام&#8217; وجود دارد&#8221; چاپ می‌شود<br />
checkCharacterInString(&#8220;برنامه‌نویسی&#8221;, &#8220;ق&#8221;); // &#8220;حرف &#8216;ق&#8217; در رشته &#8216;برنامه‌نویسی&#8217; وجود ندارد&#8221; چاپ می‌شود</p>
<p data-sourcepos="103:1-103:114">
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/fuction-practice-in-dart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش زبان برنامه نویسی دارت – تابع در دارت</title>
		<link>https://programmingshow.ir/functions-in-dart/</link>
					<comments>https://programmingshow.ir/functions-in-dart/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Sat, 21 Oct 2023 06:14:54 +0000</pubDate>
				<category><![CDATA[آموزش دارت]]></category>
		<category><![CDATA[آموزش رایگان]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=519</guid>

					<description><![CDATA[سلام دوستان! امروز در این پست قصد داریم درباره‌ی توابع در زبان برنامه‌نویسی دارت صحبت کنیم. توابع یکی از مهم‌ترین قسمت‌های هر زبان برنامه‌...]]></description>
										<content:encoded><![CDATA[<iframe id='wp-aparat-6a8e5e892581a' src='https://www.aparat.com/video/video/embed/videohash/UTWnV/vt/frame' width='100%' allowfullscreen='true' class='aparat-frame aparat-full-frame'></iframe>
<div dir="rtl">
<h2 data-sourcepos="1:1-1:30">تابع در دارت</h2>
<p data-sourcepos="3:1-3:77">تابع در دارت، بلوک‌های کد سازمان‌ یافته‌ای هستند که وظایف خاصی را انجام می‌دهند. آنها به شما کمک می‌کنند تا کد خود را modular و خواناتر کنید و از تکرار کد جلوگیری کنید.</p>
<h3 data-sourcepos="5:1-5:20">نحوه تعریف تابع در دارت</h3>
<p data-sourcepos="7:1-7:83">برای تعریف یک تابع در دارت، از کلمه کلیدی function به دنبال نام تابع، پارامترها (در صورت نیاز) و نوع داده‌ای مقدار بازگشتی استفاده می‌کنید.</p>
<div>
<div></div>
<div>
<pre dir="ltr">// تعریف تابعی به نام "greet" که هیچ پارامتری ندارد و رشته‌ای را به عنوان مقدار بازگشتی برمی‌گرداند
function greet() {
  return "سلام به همه!";
}

// تعریف تابعی به نام "calculateArea" که دو پارامتر (طول و عرض) دارد و مساحت مستطیل را به عنوان مقدار بازگشتی برمی‌گرداند
function calculateArea(double length, double width) {
  return length * width;
}
</pre>
</div>
</div>
<h3 data-sourcepos="21:1-21:18">فراخوانی تابع در دارت</h3>
<p data-sourcepos="23:1-23:82">برای فراخوانی یک تابع در دارت، نام آن را به دنبال آرگومان‌ها (در صورت نیاز) در پرانتز قرار می‌دهید.</p>
<div>
<div></div>
<div style="text-align: left;">
<pre dir="ltr">// فراخوانی تابع "greet" و ذخیره مقدار بازگشتی در متغیر "message"
String message = greet();
print(message); // "سلام به همه!" چاپ می‌شود

// فراخوانی تابع "calculateArea" و ذخیره مساحت در متغیر "rectangleArea"
double rectangleArea = calculateArea(5.0, 3.0);
print("مساحت مستطیل: $rectangleArea"); // "15.0" چاپ می‌شود
</pre>
</div>
</div>
<h3 data-sourcepos="35:1-35:14">پارامترها</h3>
<p data-sourcepos="37:1-37:76">پارامترها به شما این امکان را می‌دهند که داده‌ها را به تابع ارسال کنید.</p>
<ul data-sourcepos="39:1-40:100">
<li data-sourcepos="39:1-39:92"><strong>پارامترهای اجباری</strong>: پارامترهایی هستند که هنگام تعریف تابع در دارت باید مقدار اولیه داشته باشند.</li>
<li data-sourcepos="40:1-40:100"><strong>پارامترهای اختیاری</strong>: پارامترهایی هستند که هنگام تعریف تابع در دارت می‌توانند مقدار اولیه نداشته باشند و شما می‌توانید در هنگام فراخوانی تابع به آنها مقدار بدهید.</li>
<li data-sourcepos="41:1-42:0"><strong>پارامترهای نامگذاری شده</strong>: پارامترهایی هستند که با نام آنها به آنها مقدار می‌دهید، که خوانایی کد را افزایش می‌دهد.</li>
</ul>
<h3 data-sourcepos="43:1-43:19">مقادیر بازگشتی</h3>
<p data-sourcepos="45:1-45:158">توابع می‌توانند مقادیر را به عنوان نتیجه عملیات خود بازگردانند. نوع داده‌ای مقدار بازگشتی باید با نوع داده‌ای که در تعریف تابع مشخص شده است مطابقت داشته باشد.</p>
<h3 data-sourcepos="47:1-47:16">انواع تابع در دارت</h3>
<ul data-sourcepos="49:1-51:0">
<li data-sourcepos="49:1-51:0">توابع بدون بازگشت: این توابع هیچ مقداری را باز نمی‌گردانند و فقط برای انجام عملیاتی مانند چاپ متن یا تغییر متغیرها استفاده می‌شوند.</li>
</ul>
<div>
<div></div>
<div>
<pre dir="ltr">function printMessage() {
  print("پیام از تابع بدون بازگشت");
}
</pre>
</div>
</div>
<ul data-sourcepos="58:1-59:46">
<li data-sourcepos="58:1-59:46">توابع با بازگشت: این توابع یک مقدار را به عنوان نتیجه عملیات خود باز می‌گردانند.</li>
</ul>
<div>
<div></div>
<div>
<pre dir="ltr">function calculateSum(int num1, int num2) {
  return num1 + num2;
}
</pre>
</div>
</div>
<h3 data-sourcepos="67:1-67:18">دامنه متغیرها</h3>
<p data-sourcepos="69:1-69:171">متغیرهایی که در داخل یک تابع تعریف می‌شوند، فقط در داخل آن تابع قابل دسترسی هستند. این به شما کمک می‌کند تا از تداخل نام‌ها و خطاهای برنامه‌نویسی جلوگیری کنید.</p>
<p data-sourcepos="71:1-71:15">مفاهیم مهم:</p>
<ul data-sourcepos="73:1-79:0">
<li data-sourcepos="73:1-74:64"><strong>اثر جانبی</strong>: تغییراتی که یک تابع در متغیرهای خارج از خود ایجاد می‌کند.</li>
<li data-sourcepos="75:1-76:45"><strong>توابع تو در تو</strong>: تابعی که در داخل تابع دیگری تعریف شده است.</li>
<li data-sourcepos="77:1-79:0"><strong>واحدهای تست</strong>: تکه‌های کدی که برای تست عملکرد یک تابع یا واحد کد نوشته می‌شوند.</li>
</ul>
<h3 data-sourcepos="80:1-80:28">مزایای استفاده از توابع</h3>
<ul data-sourcepos="82:1-90:0">
<li data-sourcepos="82:1-83:61"><strong>modular شدن کد</strong>: کد شما را به بخش‌های کوچکتر و قابل مدیریت‌تر تقسیم می‌کند.</li>
<li data-sourcepos="84:1-85:42"><strong>خوانایی</strong>: کد شما را خواناتر و قابل فهم‌تر می‌کند.</li>
<li data-sourcepos="86:1-87:91"><strong>قابلیت استفاده مجدد</strong>: می‌توانید از توابع در قسمت‌های مختلف برنامه خود بدون نیاز به نوشتن مجدد کد استفاده کنید.</li>
<li data-sourcepos="88:1-90:0"><strong>نگهداری</strong>: یافتن و اصلاح خطاها در کدتان را آسان‌تر می‌کند.</li>
</ul>
<p data-sourcepos="91:1-91:9"><strong>مثال</strong>:</p>
<p data-sourcepos="93:1-93:100">فرض کنید می‌خواهید برنامه‌ای بنویسید که مساحت و محیط مستطیل‌ها را با طول و عرض‌های مختلف محاسبه کند:</p>
<div>
<div></div>
<div>
<pre dir="ltr">function calculateArea(double length, double width) {
  return length * width;
}

</pre>
</div>
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/functions-in-dart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش زبان برنامه نویسی دارت – تمرین آرایه در دارت</title>
		<link>https://programmingshow.ir/array-practice-in-dart/</link>
					<comments>https://programmingshow.ir/array-practice-in-dart/#respond</comments>
		
		<dc:creator><![CDATA[mehrabbozorgi]]></dc:creator>
		<pubDate>Thu, 19 Oct 2023 07:52:50 +0000</pubDate>
				<category><![CDATA[آموزش دارت]]></category>
		<category><![CDATA[آموزش رایگان]]></category>
		<guid isPermaLink="false">https://programmingshow.ir/?p=517</guid>

					<description><![CDATA[با سلام به همه دوستان توی این پست آموزش برنامه نویسی دارت قصد داریم تا با آرایه ها که در قسمت قبل آشنا شدیم تمرین کنیم ...]]></description>
										<content:encoded><![CDATA[<p style="text-align: center;"><iframe id='wp-aparat-6a8e5e8925ba3' src='https://www.aparat.com/video/video/embed/videohash/jOHfh/vt/frame' width='100%' allowfullscreen='true' class='aparat-frame aparat-full-frame'></iframe></p>
<div dir="rtl">
<h2 data-sourcepos="1:1-1:47">۷ تمرین ساده برنامه نویسی با آرایه در دارت:</h2>
<h3 data-sourcepos="3:1-3:33">1. جمع اعداد زوج در یک آرایه:</h3>
<p data-sourcepos="5:1-5:78">برنامه‌ای بنویسید که اعداد یک آرایه را بررسی کند و مجموع اعداد زوج را چاپ کند.</p>
<div>
<div>
<div></div>
<div>
<pre dir="ltr">void main() {
  List&lt;int&gt; numbers = [1, 5, 8, 9, 6, 2, 3];
  int sum = 0;

  for (int number in numbers) {
    if (number % 2 == 0) {
      sum += number;
    }
  }

  print("مجموع اعداد زوج: $sum");
}
</pre>
</div>
</div>
</div>
<h3 data-sourcepos="22:1-22:38">2. یافتن بزرگترین عدد در یک آرایه:</h3>
<p data-sourcepos="24:1-24:88">برنامه‌ای بنویسید که بزرگترین عدد را در یک آرایه از اعداد صحیح پیدا کند و آن را چاپ کند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">void main() {
  List&lt;int&gt; numbers = [7, 5, 2, 9, 1, 8, 4];
  int largest = numbers[0];

  for (int number in numbers) {
    if (number &gt; largest) {
      largest = number;
    }
  }

  print("بزرگترین عدد: $largest");
}
</pre>
</div>
</div>
<h3 data-sourcepos="41:1-41:40">3. محاسبه میانگین نمرات دانش‌آموزان:</h3>
<p data-sourcepos="43:1-43:125">برنامه‌ای بنویسید که نمرات دانش‌آموزان را از کاربر دریافت کند و در یک آرایه ذخیره کند. سپس میانگین نمرات را محاسبه و چاپ کند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">void main() {
  List&lt;int&gt; scores = [];
  int numberOfStudents;

  print("تعداد دانش‌آموزان را وارد کنید:");
  numberOfStudents = int.parse(stdin.readLineSync()!);

  for (int i = 0; i &lt; numberOfStudents; i++) {
    print("نمره دانش‌آموز ${i + 1} را وارد کنید:");
    scores.add(int.parse(stdin.readLineSync()!));
  }

  double average = 0;
  for (int score in scores) {
    average += score;
  }
  average /= scores.length;

  print("میانگین نمرات: $average");
}
</pre>
</div>
</div>
<h3 data-sourcepos="68:1-68:35">4. مرتب کردن آرایه ای از اعداد:</h3>
<p data-sourcepos="70:1-70:82">برنامه‌ای بنویسید که یک آرایه از اعداد را به ترتیب صعودی مرتب کند و آن را چاپ کند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">void main() {
  List&lt;int&gt; numbers = [5, 2, 4, 1, 3];

  numbers.sort();

  print("آرایه مرتب شده: $numbers");
}
</pre>
</div>
</div>
<h3 data-sourcepos="82:1-82:48">5. یافتن کلمه ای خاص در یک آرایه از رشته‌ها:</h3>
<p data-sourcepos="84:1-84:106">برنامه‌ای بنویسید که یک کلمه خاص را در یک آرایه از رشته‌ها جستجو کند و در صورت وجود، موقعیت آن را چاپ کند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">void main() {
  List&lt;String&gt; words = ["سلام", "به", "دنیای", "برنامه‌نویسی", "با", "دارت"];
  String targetWord = "برنامه‌نویسی";

  int index = words.indexOf(targetWord);

  if (index != -1) {
    print("کلمه $targetWord در موقعیت $index پیدا شد");
  } else {
    print("کلمه $targetWord پیدا نشد");
  }
}
</pre>
</div>
</div>
<h3 data-sourcepos="101:1-101:33">6. حذف عنصری خاص از یک آرایه:</h3>
<p data-sourcepos="103:1-103:54">برنامه‌ای بنویسید که عنصری خاص را از یک آرایه حذف کند.</p>
<div>
<div></div>
<div>
<pre dir="ltr">void main() {
  List&lt;int&gt; numbers = [1, 2, 3, 4, 5];
  int elementToRemove = 3;

  numbers.remove(elementToRemove);

  print("آرایه بعد از حذف: $numbers");
}
</pre>
</div>
</div>
<h3 data-sourcepos="116:1-116:31">7. ایجاد یک آرایه دو بعدی:</h3>
<p data-sourcepos="118:1-118:80">برنامه‌ای بنویسید که یک آرایه دو بعدی (ماتریس) را برای نمایش جدول ضرب ایجاد کند.</p>
<div>
<p dir="ltr">void main() {<br />
const int rows = 10;<br />
const int columns = 10;</p>
<p dir="ltr">List&lt;List&lt;int&gt;&gt; multiplicationTable = List.generate(rows, (i) =&gt; List.filled(columns, 0));</p>
<p dir="ltr">for (int i = 0; i &lt; rows; i++) {<br />
for (int j = 0; j &lt; columns; j</p>
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://programmingshow.ir/array-practice-in-dart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
