شما وارد حساب خود نشده و یا ثبت نام نکرده اید. لطفا وارد شوید یا ثبت نام کنید تا بتوانید از تمامی امکانات انجمن استفاده کنید.






ارسال پاسخ 
 
امتیاز موضوع:
  • 1 رأی - میانگین امیتازات : 5
  • 1
  • 2
  • 3
  • 4
  • 5
[آموزش جاوا] جلسه اول - مفاهیم اولیه شی گرایی
17.02.2012, 01:15 (آخرین ویرایش در این ارسال: 17.02.2012 02:10، توسط cloud.)
ارسال: #1
آفلاین

حالت من: Negaran
جلسه اول - مفاهیم اولیه شی گرایی
معرفی جاوا
جاوا در ابتدا با نام پروژه سبز به سرپرستی James Gosling در شرکت Sun Micro Systems متولد شد. نتیجه کار بر روی این پروژه زبانی به نام oak بود که در سال 1992 ایجاد شد. Oak به معنای بلوط است و در واقع زمانی که جیمز از پنجره اتاق کاریش به یک درخت بلوط نگاه می کرد، این نام را انتخاب کرد!! بعد از درک قابلیت های این زبان، شرکت sun تصمیم به انتخاب نام بهتری برای این محصول قدرتمند خود کرد. بنابراین افراد تیم پروژه سبز به یک کافی شاپ نزدیک شرکت رفتند تا نامی دیگر برای این زبان انتخاب کنند. پس از نصف روز بحث و بررسی نام JAVA که مخفف نامهای James Gosling, Arthur Van hoff, Andy bechtolsheim است را به عنوان نام این زبان انتخاب کردند. ار آنجا که مراسم نامگذاری در کافی شاپ برگزار شده بود، یک فنجان قهوه داغ را به عنوان نماد جاوا در نظر گرفتند!!

تجرید Abstraction
تجرید یکی از مهمترین اصل ها در جاوا و در کل در زبان های شی گرا هست. Abstraction را با یک مثال بیان می کنیم، یک ماشین را در نظر بگیرید، ما بدون اینکه به ساختار درونی آن اطلاعی داشته باشیم یا اینکه بدانیم موتور آن چگونه کار می کند، از ماشین استفاده می کنیم. Abstraction را به این صورت می توان بیان کرد که بدون اطلاع داشتن از ساختار یک شی و پیچیدگی های که این شی دارد از آن استفاده کنیم. با اینکه ماشین دارای تعدادی زیادی اجزا هست ولی از نظر ما یک شی هست که به آن ماشین می گوییم. با Abstraction یک سیستم با اجزا پیچیده را به یک جز تبدیل می کنیم.

کپسول سازیencapsulation
کپسول سازی به این معنی است که قسمتی از کد را در یک کپسول قرار بدهیم تا از دسترس سایرین در امان باشد. در جاوا encapsulation بر روی کلاس (class) انجام می شود، به این صورت که قسمتی از کد که سایر کلاس ها به آن ها نیازی ندارند را مخفی می کنیم و فقط قسمتی از کد را در اختیار همه می گذاریم که نیاز دارند.
فرض کنید می خواهیم کلاس stack (پشته) را پیاده سازی کنیم. تنها چیزی که سایرین نیاز به آن دارند عنصر بالایی stack است، پس به فقط به عنصر بالای پشته اجازه می دهیم که سایرین به آن دسترسی داشته باشند اما شمارنده آرایه stack فقط برای کنترل stack است، پس نیازی نیست که سایرین از مقدار آن اطلاعی داشته باشند و یا بتوانند آن را تغییر بدهند، پس اجازه نمی دهیم به آن دسترسی داشته باشند.
برای مخفی سازی و در کل پیاده سازی encapsulation می توان از کلمات رزرو شده private و public استفاده کرد. با private می توانیم یک متغییر یا یک شی را از دید سایر کلاس ها مخفی کنیم و فقط اجزا داخل کلاس به آن دسترسی داشته باشند. اما public همه به آن دسترسی دارند.
Encapsulation کمک بسیاری در پیاده سازی Abstraction می کند تا بتوانیم از پیچیدگی جلوگیری کنیم و فقط اجزایی که نیاز داریم را در اختیار سایرین قرار بدیم و بقیه را مخفی کنیم.

وراثت inheritance
وراثت روشی است که یک شی ویژگی ها یک شی دیگر را کسب می کند و به این صورت می توانیم مفهوم سلسله مراتب را پیاده سازی کنیم. در اینجا ما دو مفهوم subclass و super class داریم، subclass ویژگی super-class را به ارث می برد.
مثلا ما یک شی دانشجو و یک شی استاد داریم. می توانیم به صورت جداگانه ویژه گی هرکدام را در کلاس های جدا تعریف کنیم، اما با وراثت این کار درست نیست. ما باید ویژه گی های یکسان را در کلاسی به عنوان super-class قرار بدهیم و 2 subclass یکی برای استاد و یکی برای دانشجو ایجاد کنیم و در هر کدام ویژه گی های منحصر به فرد خودشان را قرار بدهیم. نکنه این است که اگر ما بخواهیم یک ویژه گی جدید به هر 2 اضافه کنیم کافی است این ویژگی را به super-class اضافه کنیم تا به همه subclass آن اضافه شود.
نکته قابل توجه این است که وراثت از Encapsulation حمایت می کند. به این معنی که اگر ویژه گی در super-class کپسول سازی شده باشد برای subclass نیز کپسوله شده است.

چند شکلی polymorphism
فرض کنید ما برنامه ای داریم که در آن به دو stack نیاز داریم. یکstack با ورودی اعداد صحیح و دیگری با ورودی رشته. پس نیاز داریم دو بار کلاس stack را پیاده سازی کنیم چون عنصر ورودی آن ها متفاوت است. آیا واقعا این کار درست است؟ فرض کنید ما در برنامه به 100 stack با ورودی متفاوت نیاز داریم، باید 100 کلاس باری آن تعریف کنیم؟ مفهوم چند شکلی می تواند در این مورد به ما کمک کند. ما با طراحی یک interface، ساختار و مفهوم یک stack را بدون در نظر گرفتن نوع عنصر ورودی طراحی می کنیم. در واقع interface به ما این کمک را می کند که مجموعه از مفاهیم را با یک نام بسازیم و برای گروهی از فعالیت ها استفاده کنیم. دقت کنید که در مثال بالا ما برای طراحی مجبور بودیم کلاسی با عنوان StatcInteger و کلاس دیگری با نام StackString تعریف کنیم اما با استفاده از چندشکلی در جاوا فقط یک کلاس با نام stack پیاده سازی می کنیم و نه تنها برای int و String بلکه برای هر شی دیگر می توانیم از این کلاس استفاده کنیم.
چند شکلی کاربردهای زیاد دیگری دارد که در جلسات بعدی در حین استفاده از آن ها توضیح می دهیم.


این چهار مفهوم، مفاهیم اساسی زبان های شی گرا هستند که با ترکیب این مفاهیم می توانیم یک سیستم بزرگ را به راحتی پیاده سازی کنیم و معماری ساده و قابل فهم از آن ارائه کنیم.

دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
مشاهده وب سایت کاربر یافتن تمامی ارسال های این کاربر
نقل قول این ارسال در یک پاسخ
 سپاس شده توسط admin ، remove ، soodabeh ، gandom ، mehran89 ، alimp_danger

17.02.2012, 02:57
ارسال: #2
آفلاین

حالت من: Bachemosbat
RE: جلسه اول - مفاهیم اولیه شی گرایی
خیلی خیلی ممنون S14
(17.02.2012 01:15)cloud نوشته است دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
نکته قابل توجه این است که وراثت از Encapsulation حمایت می کند. به این معنی که اگر ویژه گی در super-class کپسول سازی شده باشد برای subclass نیز کپسوله شده است.

مفهوم این جمله رو متوجه نشدم S21

گرت هواست که معشوق نگسلد پیوند
نگاه دار سر رشته تا نگه دارد
یافتن تمامی ارسال های این کاربر
نقل قول این ارسال در یک پاسخ

17.02.2012, 13:24
ارسال: #3
آفلاین

حالت من: Negaran
RE: جلسه اول - مفاهیم اولیه شی گرایی
منظور این هست که یک سری ویژگی در super-class مخفی شده باشد (تا اینجا ما super-class را کپسوله کردیم) و فقط اعضا خود کلاس به آن دسترسی دارند، وقتی کلاسی از super-class ارث می برد، دارای همان ویژگی ها می شود که کپسوله هست و از دید بقیه مخفی هست. و فقط اعضا کلاس خودش به آن دسترسی دارند. یعنی مخفی سازی و کپسوله سازی نیز ارث برده شده اند.

دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
مشاهده وب سایت کاربر یافتن تمامی ارسال های این کاربر
نقل قول این ارسال در یک پاسخ
 سپاس شده توسط remove ، parsiphoenix ، alimp_danger

17.02.2012, 14:06
ارسال: #4
آفلاین

حالت من: Bachemosbat
RE: جلسه اول - مفاهیم اولیه شی گرایی
ممنون فهمیدمWink

گرت هواست که معشوق نگسلد پیوند
نگاه دار سر رشته تا نگه دارد
یافتن تمامی ارسال های این کاربر
نقل قول این ارسال در یک پاسخ
 سپاس شده توسط mehran89

17.02.2012, 14:15
ارسال: #5
آفلاین

حالت من: Negaran
RE: جلسه اول - مفاهیم اولیه شی گرایی
خواهش می کنم

دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
مشاهده وب سایت کاربر یافتن تمامی ارسال های این کاربر
نقل قول این ارسال در یک پاسخ

20.02.2012, 22:53
ارسال: #6
آفلاین

حالت من: Hehe
RE: جلسه اول - مفاهیم اولیه شی گرایی
من چند تا پروژه نوشتم . البته جدا جدا اما همین که میام یکی شونو اجرا کنم یکی دیگه اجرا میشه همشونو می بندم همونی که میخوام اجرا شه رو باز می کنم باز یکی دیگه اجرا میشه
چیکار کنم؟؟؟

Blush
یافتن تمامی ارسال های این کاربر
نقل قول این ارسال در یک پاسخ

21.02.2012, 22:18
ارسال: #7
آفلاین

حالت من: cheshmak
RE: جلسه اول - مفاهیم اولیه شی گرایی
(20.02.2012 22:53)Azfandak نوشته است دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
من چند تا پروژه نوشتم . البته جدا جدا اما همین که میام یکی شونو اجرا کنم یکی دیگه اجرا میشه همشونو می بندم همونی که میخوام اجرا شه رو باز می کنم باز یکی دیگه اجرا میشه
چیکار کنم؟؟؟

باید از قسمت Projects روی پروژه ی مورد نظر راست کلیک کنید و Set As Main Project را انتخاب کنید.

تلخ تلخم،
مثل یک خارک سبز
سردمه و می‌دونم،
هیچ‌زمانی دیگه خرما نمی‌شم...

حسین پناهی
مشاهده وب سایت کاربر یافتن تمامی ارسال های این کاربر
نقل قول این ارسال در یک پاسخ
 سپاس شده توسط Azfandak ، mehran89

ارسال پاسخ 


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع:
1 مهمان

بازگشت به بالابازگشت به محتوا