این بار مثال را با شیرینی و کیک پیش میبریم. فرض کنید شما قصد پخت کیک و نان را دارید. طبیعی است که برای اینکار یک واسط را تعریف کرده و عمل «پختن» را در آن اعلام میکنید تا هر کلاسی که قصد پیاده سازی این واسط را داشت، «پختن» را انجام دهد. در ادامه یک کلاس بنام کیک ایجاد خواهید کرد و شروع به پخت آن میکنید. خوب احتمالا الان کیک آمادهاست و میتوانید آنرا میل کنید! ولی یک سؤال. تکلیف شخصی که کیک با روکش کاکائو دوست دارد و شمایی که کیک با ر ...
تا کنون با روش برنامه ریزی چابک ، اهمیت و نحوه اولویت بندی فعالیتها در
این مدل آشنا شدیم. اما بدون شک اولویت بندی
یک لیست طولانی از کارها و فعالیتها کار مشکل و زمان بری خواهد بود، بهخصوص اگر فردی پر
مشغله با مسئولیتهای فراوان باشید. در مدل
برنامه ریزی به روش چابک، پیشنهاد شدهاست که لیست
فعالیتهای کاری خود را دسته بندی کنید. در این روش، دسته بندی با الهام از روش
کار بخش اورژانس بیمارستانها، براساس درجه ضر ...
سناریو زیر را در نظر بگیرید: قصد دارید تا در برنامهی خود ارسال پیام از طریق پیامک و ایمیل را راه اندازی کنید. هر کدام از این روشها نیز برای خود راههای متفاوتی دارند. برای مثال ارسال پیامک از طریق وب سرویس یا یک API خارجی و غیره. کاری را که میتوان انجام داد، بشرح زیر نیز میتوان بیان نمود: ابتدا یک Interface ایجاد میکنیم (IBridge) و در آن متد Send را قرار میدهیم. این متد یک پارامتر ورودی از نوع رشته میگیرد و به کمک آن میتوان اقدا ...
در قسمت قبلی ما به بررسی درخت و اصطلاحات فنی آن پرداختیم و اینکه چگونه یک درخت را پیمایش کنیم. در این قسمت مطلب قبل را با درختهای دودویی ادامه میدهیم.
درختهای دودویی Binary Trees همهی موضوعات و اصطلاحاتی را که در مورد درختها به کار بردیم، در مورد این درخت هم صدق میکند؛ تفاوت درخت دودویی با یک درخت معمولی این است که درجه هر گره نهایتا دو خواهد بود یا به عبارتی ضریب انشعاب این درخت 2 است. از آن جایی که هر گره در نهای ...
سناریوی زیر را در نظر بگیرید: از شما خواسته شده است تا نحوهی ساخت تلفن همراه را پیاده سازی نمایید. شما در گام اول 2 نوع تلفن همراه را شناسایی نمودهاید (Android و Windows Phone). پس از شناسایی، احتمالا هر کدام از این انواع را یک کلاس در نظر میگیرید و به کمک یک واسط یا کلاس انتزاعی، شروع به ساخت کلاس مینمایید، تا در آینده اگر تلفن همراه جدیدی شناسایی شد، راحتتر بتوان آن را در پیاده سازی دخیل نمود. اگر چنین فکر کرده اید باید گفت که 90% ...
در این مقاله یکی از ساختارهای داده را به نام ساختارهای درختی و گرافها معرفی کردیم و در این مقاله قصد داریم این نوع ساختار را بیشتر بررسی نماییم. این ساختارها برای بسیاری از برنامههای مدرن و امروزی بسیار مهم هستند. هر کدام از این ساختارهای داده به حل یکی از مشکلات دنیای واقعی میپردازند. در این مقاله قصد داریم به مزایا و معایب هر کدام از این ساختارها اشاره کنیم و اینکه کی و کجا بهتر است از کدام ساختار استفاده گردد. تمرکز ما بر درخت ه ...
در قسمت قبلی به مقدمات و ساخت لیستهای ایستا و پویا به صورت دستی پرداختیم و در این قسمت (مبحث پایانی) لیستهای آماده در دات نت را مورد بررسی قرار میدهیم.
کلاس ArrayList این کلاس همان پیاده سازی لیستهای ایستایی را دارد که در مطلب پیشین در مورد آن صحبت کردیم و نحوه کدنویسی آن نیز بیان شد و امکاناتی بیشتر از آنچه که در جدول مطلب پیشین گفته بودیم در دسترس ما قرار میدهد. از این کلاس با اسم untyped dynamically-extendable a ...
عمل تکثیر در MongoDB عمل تکثیر (Replication) به فرآیند همزمان سازی داده در میان چند سرور گفته میشود. تکثیر، افزونگی را فراهم میآورد و دسترسی پذیری دادهها را توسط کپی داده در چندین سرور مختلف افزایش میدهد. این کار، یک پایگاه داده را در مقابل از دسترس خارج شدن یک سرور مفرد، محافظت میکند. همچنین امکان بازیابی از خرابی سخت افزار و وقفههای سرویس را به کاربر میدهد. توسط کپی برداری از اطلاعات، میتوانید یکی از آنها را برای بازیابی، ...
بعضی از دادهها ساختارهای سادهای دارند و به صورت یک صف یا یک نوار ضبط به ترتیب پشت سر هم قرار میگیرند؛ مثل ساختاری که صفحات یک کتاب را نگهداری میکند. یکی از نمونههای این ساختارها، List، صف، پشته و مشتقات آنها میباشند.
ساختار دادهها چیست؟ در اغلب اوقات، موقعیکه ما برنامهای را مینویسیم با اشیاء یا دادههای زیادی سر و کار داریم که گاهی اوقات اجزایی را به آنها اضافه یا حذف میکنیم و در بعضی اوقات هم آنها را مرتب سازی ...