آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

طراحی نرم افزار اندروید بر پایه روش MVC

طاهر  10 سال پیش  9 سال پیش
+11 0

دیدم در تایپیک دیگر بحث در مورد MVCموجب تغییر ماهیت تایپیک شد

گفتم یه تایپیک جداگانه برای این مورد بزنم .

اساتید لطف کنند با یه مثال عملی نحوه پیاده سازی MVCدر یکی از نرم افزارهای اندرویدی که در آ»وزش ها هست رو توضیح بدن

0 0
سرویس پرسش و پاسخ رو من بر پایه VC ساختم و نه MVC ، اولش حدود 3 روز داشتم سعی می کردم MVC بنویسم، اما دیدم کد خیلی داره تاب ور می داره. اون چیزی که وحید جان میگه خودش انجام میده رو من نمی تونم درک کنم، هیچ چیز در برنامه نویسی خودش انجام نمیشه مگر اینکه ویزارد باشه. شما بالاخره باید درخواستت رو از C به M ارسال کنی دیگه و بعدش M باید فیلتر کنه و بهت برگردونه دیگه. نه درخواستش و نه فیلترش و نه برگردوندنش رو درک نمی کنم چطور اتوماتیکه. دوستان لطف کنن یک مثال عملی با سورس کد در هر زبانی در جواب همین سئوال بنویسن. (10 سال پیش)
0 0
مرسی که تاپیک باز کردی. راستی لزومی به Android بودنش نیست. هر چی بود اوکی هست. فقط کد پشت پرده نداشته باشه. مثال هم تا جایی که میشه ساده باشه. (10 سال پیش)
0 0
به این خاطر گفتم اندروید چون خانه اندروید هست و خیلی از دوستان ممکنه به زبانهای دیگه مسلط نباشن برای همین برای روشنتر شدن موضوع یکی از پروژه های آموزشی رو با استفاده از روش پیاده سازی MVC دوستان توضیح بدن و روش بحث بشه فکر کنم اینجوری خیلی قابل درک و لمس تر باشه (10 سال پیش)
0 0
من اینطوری نوشتم استاد که مسریاب میومدم آدرس رو تحلیل میکرد و کلاس های سیستمی رو لود میکردم و بعد کنترلر لود میشد و نسبت به آدرس های تحلیل شده کنترلر متدهاشو فراخوانی میکرد و بعد مدل وارد عمل میشد کتابخانه های مرتبط به پایگاه داده برای جدول مورد نظر کنترلر ایجاد میشدند به اسم خود جداول و سپس خروجی بر میگشت به کنترلر و کنترلر پاس میداد به ویو و ویو هلپرها رو فراخوانی میکرد خروجی رو برمیگردوند به کنترلر و در آخر کاربر لینک (10 سال پیش)
0 0
@Taher : در خصوص اندروید بودن، در واقع چیزی داریم به اسم شبه کد، همه درکش می کنن، زبان های خوانایی مثل PHP, C#،java و ... با مدل نوشتاری Python و ... فرق می کنن. میشه PHP رو فهمید اما Python رو به این سادگی نمیشه فهمید و خیلی نوشتارش متفاوت تر از کد نویسی مرسوم هست. (10 سال پیش)
0 0
@ AllahYar : اینترنت پر هست از این دیاگرام ها. کاملاً عملی می خوایم بنویسیم. یک نمونه من می ذارم دوستان تکمیل/تصحیح کنن یا کلاً یکی دیگه بنویسن، راستی این شبه کد هست. نه PHP هست نه Java. (10 سال پیش)
0 0
استاد متوجه نشدم منظورتون Syntax هست ؟ (10 سال پیش)
0 0
اگه با مثال پیش بریم و همه روی همون مثال نظر بدن و در آخر به یه مثال جامع برسیم فکر کنم خیلی بهترهمنتظر مثال استاد هستیم  (10 سال پیش)
 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
uncocoder  10 سال پیش
+5 0

این یه تیکه کدی که میشه باهاش بحث رو شروع کرد. دوستان اگر ایرادی هست در منطق MVC اول تصحیحش کنن بعد بحث کنیم در موردش. راستی این کد شبیه PHP است اما صرفاً منظور PHP نبوده. همانطور که مشخصه کد کاملاً واضح هست. مثلاً در PHP بجای . از -> استفاده میشه اما من برای خوانایی بیشتر از همون . استفاده کردم. همینطور $ یعنی متغیر. و مثلاً PHP تایپ نداره اما من برای model تایپ گذاشتم.

// controller.php
class Controller {

private Model model;


public Constructor(){
model = new Model();
}


public function showUserInfo($userId){
$record = model.getUserInfo($userId);
render('someFile.php', $record);
}
}


// model.php
class Model {

public function getUserInfo($userId){
return getDatabase().query("SELECT name, family, age FROM users WHERE userid=$userId");
}
}


// someFile.php ( it can called View in MVC )
<div>
<span>Name is: <?= $record['name'] ?></span><br/>
<span>Family is: <?= $record['family'] ?></span><br/>
<span>Age is: <?= $record['age'] ?></span><br/>
</div>

و مثلاً اگر فرض کنیم دستور از وب سایت بیاد، اونوقت با صدا زدن url زیر در Browser باید خروجی رو ببینیم که در آن 3 شماره کاربری است که قصد داریم اطلاعاتش را ببینیم:

http://someDomain.com/Controller/showUserInfo/3
0 0
خیلی عالی و واضح فکر نکنم نیازی به توضیح باشه (10 سال پیش)
0 0
استاد ما دست از سر پی اچ پی برداشتیم انگاری پی اچ پی نمیخواد دست از سر ما بر داره D: (10 سال پیش)
0 0
نوشتن همین مثال برای اندروید، کلی سورس می خواست ( مخصوصاً تو نمایش ) اما PHP و HTML خیلی ساده و قابل درکه. (10 سال پیش)
0 0
یعنی پیاده سازی MVC در اندروید برای پروژه های کوچیک یا بزرگ مقرون به صرفه نیست ؟؟؟ (10 سال پیش)
0 0
وقتی شما لایه ها را با XML می سازید وعملاً هیچ کدی داخل آن نیست پس یک V دارید آنهم به چه خوبی. می ماند MC که به عقیده من لزومی نیست که حتی در پروژه های بزرگ جدا باشد. از طرفی معمولاً یک نرم افزار اندروید لایه Model نیاز ندارد و اگر داشته باشد بیشتر موکول می شود به وب سرویس که دیتا را از سرور می گیرد، مگر اینکه دیتابیس Local باشد که در آن صورت طبق صحبت های گذشته، به عقیده من Model زیادی است اما بعضی دوستان نظر دیگری دارند و احتمالاً هم نظرشان درست است. (10 سال پیش)
0 0
اتفاقاً بحث ساده ای هست. مقاله های تخصصی معمولاً دیاگرام میکشن و مثال عملی ندارن. چیزی که من نوشتم خیلی ساده در کد MVC رو نشون میده. ( ساده ترین شکل ممکن ). در ضمن MVC یک Design Pattern هست، پس لزومی نداره همیشه و همه جا استفاده بشه. Design Pattern نسبت به Pattern معماری پروژه راه کارهایی ارائه میده. (10 سال پیش)
0 0
سلام من فکر میکنم این که مودل جدا باشه این خوبی را داره که ما الان تصمیم میگیریم دیتا را در فایل ذخیره کنیم فردا تصمیم میگیریم در دیتابیس پس فردا توی مثلا رجیستری یا مثلا الان اوراکل کار میکنیم ، فردا میخوایم روی sqlite کار کنیم خیلی خیلی راحت توی لایه مودل این کار را انجام میدیم ولی وقتی با کدمون یک جا باشه باید همه کد را چگ کنیم و عوض کنیم حتی میتونیم خیلی راحت آپشنال بگیم از چه منبعی بخونه و بنویسه بدون اینکه کد خاصی بنویسیم این را در ORM بیشتر دیدم و خوشم اومده ( در فریمورک جانگو با زبان پایتون ) خوشحال میشم دوستان نظرم را تکمیل کنند یا اگر اشکالی داره بفرمایند (10 سال پیش)
پاسخ به سوال 
Vahid  10 سال پیش
+1 0

یکی از جاهایی که از نظر من روی مدل به خوبی کار کرده و در ورژن 3 که در حال توسعه هست و به زودی ارائه میده یک دگرگونی اساسی انجام داده و بهترین MVC رو پیاده کرده CakePHP هست ...

CakePHP فرمورکی هست که با استفاده از اون میتونید خیلی ویزار تر کد نویسی کنید و نیازی به کار های تکراری و حوصله سر بر نیست و خیلی چیز هایی که شما بهش نیاز پیدا میکنید رو پیش بینی کرده و در قالب های مختلف در دسترس تون قرار میده و خوبیش هم این هست که اوپن سوروس هست و شما کاملا میتونید از API هاش سر در بیارید چون خط به خط داکیومنت شده ...

برای اینکه یک درک از Model داشته باشید پیشنهاد میکنم اینجا رو حتما مطالعه کنید ...

من از روز اول تلاش کردم تا اندروئید که مینویسم رو نزدیک به MVC همین فریمورک طراحی کنم اما فعلا به دلیل عدم تسلط کافی و وقت کم نشده تا کار مفیدی روی این مورد انجام بدم ...

اگر سئوالی بود من در خدمت هستم

پاسخ به سوال 
محمد حسین زاده  10 سال پیش
+8 0

دوستان اگه تمایل دارن یه نمونه برنامه رو شروع کنیم که همگی روش نظر بدن و به یه جمع بندی کلی روی لایه های برنامه تو اندروید برسیم

0 0
من که تا اینجا چیزی نفهمیدم یعنی نمیتونم درک کنم ، ممنون (10 سال پیش)
+2 0
برای توضیح جزیات همین مباحث میخوام پروژه ای رو شروع کنم که صاحبنظر های سایت توش دخیل بشن. اگه تمایل دارید زیر پست اعلام کنید (10 سال پیش)
0 0
چه نوع پروژه ای مثلا ؟! (10 سال پیش)
+2 0
موضوع تاپیک که مشخصه. بحث روی پیاده سازی MVC تو اندروید میشه. یه برنامه تعریف میشه که امکاناتی خاص رو داشته باشه. مثلا : کار با تصاویر - تعامل با وب سرویس و یه سری چیزایی که تو آموزشها باشه و رو روش کد نویسیش بحث کنیم (10 سال پیش)
0 0
من به شدت مخالفم. چون MVC همانطور که گفتم یک Design Pattern هست و Design Pattern ها مثل آچار می مونن، مطمئناً با یک آچار 18 نمیشه یک پیچ آلن رو باز و بسته کرد. MVC هم اینجا نقش آچار 18 رو داره و اندروید نقش پیچ آلن. چرا؟ چون اندروید از لایه دیتا خاصی قرار نیست استفاده کنه که همه می افته گردن webservice. در بعضی جاها با سایر Design Pattern ها مثل Singleton , Builder, Factory و ... در تناقضه. لایه V وجود نداره و خودش به عنوان XML در اندروید استفاده میشه. به دلیل Dynamic بودن کنترل برنامه های اندروید ( بر خلاف وب ) لایه کنترل بسیار پیچیده میشه و در نهایت مزاحمت ایجاد می کنه. (10 سال پیش)
+2 0
تو پست قبلی هم یکی از مواردی که در مورد MVC گفتم این بود که تیم روی پروژه کار میکنه و بناست گزارش بدن و رفع باگ کنن و ... که همون آچار 18 رو میخواد. اما تو اندروید هم بودن پروژه هایی که لایه هاشون به صورت library های جداگانه نوشته شده، حتی نه در حد تفکیک لایه ها با package. یعنی میشه پروژه ای باشه که نیاز به آچار 18 داشته باشه. ولی حداقل تاثیر این قضیه تو پروژه های 1 نفره اصلاح نحوه کدنویسی برنامه نویسه. تو پست قبلی بحث خیلی نا مربوط، ولی از اسپاگتی کد شروع شد. و قطعا عادت به استفاده صحیح از Design Pattern ها اولین راه رهایی از Dirty Code هستش (10 سال پیش)
0 0
اگر درست متوجه شده باشم: فایل xml لایه View هست، کدهایی که در کلس اکتیویتی نوشته می شه هم لایه Control رو تشکیل می دن، حالا یک کلاس هم برای گرفتن اطلاعات از دیتابیس می سازیم و در مکان مورد نظر فراخوانیش می کنیم. درست متوجه شدم؟ یا پیچیده تر از این حرفهاست؟ (10 سال پیش)
+2 0
از یه نظر فایل xml ویو هست که طرفدارای زیادی هم داره. ولی دقیقترش نه. view میشه ترکیب xml و اکتیویتی. بدون وابسته کردن اکتیویتی به xml امکان استفاده از xml وجود نداره. پس لایه منطق برنامه - کنترلر جدای اکتیویتی هستش (10 سال پیش)
+1 0
خوب می شد اگر یک نمونه پروژه اندرود عملی و سبک می ذاشتین (10 سال پیش)
0 0
پروژه که نمیشه گذاشت کلاً . در خصوص اندروید هم به نظر من ابزار مناسبی نیست و بیشتر برای Server پیشنهاد می دم استفاده کنید. (10 سال پیش)
0 0
خیلی عالی بود که این یه نمونه‌ای که آقای حسین زاده مد نطرشون بود انجام میشد تا با ساختار mvc در اندروید هم آشنا میشدیم. هیچ وقت دیر نیست... :) (9 سال پیش)
پاسخ به سوال 
sadeghbarout  10 سال پیش
+1 0

استاد من درباره MVC مطالعه ای نداشتم ولی اونجور که از صحبتها برداشت کردم اینه که این یه روش برای تمیزتر کد نوشتن و عدم تداخل در کدهای مختلفه که به نظرم این موضوع(تمیز نوشتن نه خود MVC (چون گفتم MVC نمیدونم دقیق چیه)) یه بحثیه که به کل برنامه نویسی مرتبط میشه و مخصوص سرور یا اندروید و یا ... نیست.

الان که من دارم کار گروهی انجام میدم ، خیلی به مشکلاتی بر میخوریم که من یه جور کد نویسی میکنم و دوستم یه جور دیگه .

چون به هرحال این واقعیت رو نمیشه منکر شد که ما اگه بخوای این کارو ادامه بدیم،حتما نیاز پیدا میکنیم توی گروه های بزرگتر  و با دیگران برنامه نویسی کنیم که این نیازمند اینه که چطور استاندارد تر ، تمیزتر و اصولی تر بنویسیم.

فکر کنم آموزش و یا بحث درباره این موضوع که چطور استاندارد بنویسیم که بخش های مختلف برنامه با هم قاطی نشن و همه متوجه بشن یا بعدا توی توسعه برنامه دچار مشکل نشیم، واقعا نیاز باشه.

حتی میتونه به شکل شبه کد باشه که از بحث یه زبان خاص خارج بشه

استاد ممنون میشم نظرشما و دوستان دیگه در این باره رو بدونم.

+2 0
در واقع MVC استانداردی نیست که جلوی قاطی شدن کد های برنامه نویس ها رو بگیره. بلکه Design Pattern ـی هست که باعث میشه برنامه سه لایه داشته باشه و لایه ها با هم تداخل نکنند که شامل همون Model Controller View هست. اما برای قاطی نشدن کدهای برنامه نویس ها مثلاً اگر همه دارن یک Module رو توسعه می دن، راه کارهایی وجود داره که معمولاً در جایی ثبت نشده و بنا به تجربه باید انجامش بدید. همه این راه کارها به شناخت خوب و مفید انواع Design Pattern، قوائد Object Oriented و طراحی API نیاز داره که به امید خدا در آموزشهای بعدی مورد هدف ما قرار خواهد گرفت. (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .