تریبون آزاد بچه های کامپیوتر علم و فرهنگ

دانشجویان کارشناسی ناپیوسته کامپیوتر دانشگاه علم و فرهنگ ورودی 1389

تریبون آزاد بچه های کامپیوتر علم و فرهنگ

دانشجویان کارشناسی ناپیوسته کامپیوتر دانشگاه علم و فرهنگ ورودی 1389

یادداشت های یک جوجه برنامه نویس

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

 

اینجا قصد داریم که بیشتر به مطالبی بپردازیم که از لحاظ فنی و کاربردی برای جامعه ی امروز و یک برنامه نویس لازم هستش. این مطالب مباحثی از مهندسی نرم افزار تا نحوه ی پیدا کردن یه شغل خوب رو شامل میشه. سعی من بر این هستش که مطالب پیوسته باشه و کسی که مطالب رو دنبال میکنه به یه جای خوبی برسه. اما ممکنه به مطالب پراکنده هم برخورد کنیم. اول به یه سری مطالب مهم و عموی مثل چیستی شی گرایی می پردازیم که هرکس با هر زبونی که کار میکنه باید بدونه. در ادامه یه زبون رو انتخاب می کنیم و جلو می ریم. پیشنهاد من اینه که از core java شروع کنیم و بعد بریم سمت وب و اگر عمری باقی بود بریم سمت موبایل.

من که چیزی ندارم، اما امیدوارم همین مطالب جزئی هم به دردتون بخوره. 

خوشحالم میکنید اگر با نظرات ، انتقادات و پیشنهاداتون من و این مباحث رو راهنمایی کنید. 

 

جلسه اول (چهاردهم بهمن ماه یکهزار و سیصد و هشتاد و نه)  

برای جلسه اول یه فایل PDF میذارم که یه دید کلی در مورد شی گرایی میده. زیاد پیچیده نیست اما اگر سوالی بود می تونم جواب بدم. 

 What is OOP 

من خودم یه تعریف کلی از OOP ارائه می دم که فکر میکنم به درد بخوره:  

OOP یک طرز تفکر و یک روش حل مسائل می باشد. در این روش طراح یا متفکر OOP به همه چیزی به عنوان یک شی نگاه می کند. هر شی دارای صفات ، رفتار ها و مشخصه هایی است. برای مثال اتومبیل از دیدگاه یک طراح اینگونه دیده می شود: 

 

اتومبیل یک شی (چیز) است.

این چیز مشخصه هایی دارد:

چرخ دارد، چراغ دارد، فرمان دارد، بوق دارد و ...

این چیز صفاتی هم دارد :

برخی از صفات ای این چیز اینها هستند:

رنگ، وزن، و ...

این چیز رفتارهایی دارد:

حرکت می کند.

سوخت گیری می کند.

خراب می شود.

 

 

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

 

ما قصد داریم ساختمانی بسازیم. پس مراجعه به یک آرشیتکت او نقشه ای استاندارد به ما می دهد. ما یک نمونه (Instance) از این ساختمان را در دو راهی قلهک می سازیم. 

در این مثال، نقشه همان کلاس و ساختمان همان شی است. 

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

پس این دو ساختمان (یکی در قلهک و دیگری در آدران) اشیایی از یک کلاس مشابه هستند.

  

 

 در قسمت های بعد بیشتر به این موضوع خواهیم پرداخت. 

 

جلسه دوم (پانزدهم بهمن ماه یکهزار و سیصد و هشتاد و نه)  

در تکمیل صحبت های جلسه ی قبل باید بگم که صفت هر شی مقادیری است که به یکی از خصوصیات آن تخصیص داده می شود. 

برای مثال در همان مثال اتومبیل به شکل زیر عمل می کنیم : 

رنگ اتومبیل = قرمز 

در این مثال یک نمونه شی (Instance Object) از کلاس اتومبیل (Car) ساخته شده که مقدار خصوصیت رنگ آن با قرمز مقدار دهی شده است. 

Car car = new Car();

Car.setColor(Color.RED); 

 

در اینجا رنگ اتومبیل خصیصه ، و قرمز صفت آن است. 

 

بنابراین هر شی از دو منظر قابل بررسی می باشد.

  1. خصوصیات
  2. رفتار ها 

برای درک بهتر رابطه ی میان کلاس و شی به مثال های زیر توحه کنید : 

 

کلاس کتاب :

خصوصیات : نام، نام نویسنده، نام ناشر و ...

رفتار ها : امانت بودن، در حال مطالعه بودن،

نمونه ای از اشیا : کتاب قدرت بیان نوشته برایان تریسی، کتاب شازده کوچولو نوشه سن اگزوپری 

 

کلاس مدرسه :

خصوصیات : نام، جنس دانش آموزان، نوع و ...

رفتار ها: تعطیل بودن، خراب شدن و ...

نمونه ای از اشیا : هنرستان دخترانه ی فیروز کوهی، دبیرستان پسرانه ی شهید محمود باباصفرعلی 

 

کلاس انسان:

خصوصیات: دست، پا، چشم، و ...

رفتارها: صحبت کردن، راه رفتن، فکر کردن و ...

نمونه ای از اشیا: بنجامین فرانکلین، شعبون بی مخ، هیتلر، اون آقاهه، اون یارو و ... 

 

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

 

تفکر شی گرا دارای چهار اصل است : 

1.                                           Encapsulation (بسته بندی)

2.                                           Abstraction (ایزوله کردن و پنهان سازی جزئیات)

3.                                           Inheritance (وراثت)

4.                                           Polymorphism (چند ریختی)

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

 

 

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

 

در جلسه بعد علاوه بر نصب و تنظیم ابزار های مورد نیاز به معرفی منابع قابل رجوع نیز خواهیم پرداخت. 

 

جلسه سوم (بیست و یکم بهمن ماه یکهزار و سیصد و هشتاد و نه ) 

همه ی ابزار های مورد نیاز برای شروع و ادامه ی برنامه نویسی جاوا (ابزار ها، کتاب ها، فیلم ها و ...) در قالب یک دی وی دی تدارک دیده شده است. اما نمی دونم چطوری باید به دست شما برسه. هر کس راهی به نظرش میرسه کمکمون کنه.

 

به هر حال نحوه نصب نرم افزارها رو می تونید از اینجا دریافت کنید. 

 

حالا به معرفی منابع قابل رجوع می پردازیم: 

  

  1. Thinking in Java 4 Edition : کتابی کامل به زبان لاتین، با نثری نسبتا سخت اما مفاهیمی کاملا قابل درک.

  1. Osborne Java 2 The Complete Reference 5 Edition : کتابی نسبتا قدیمی به زبان لاتین، با نثری روان و ساده ، برای مطالعه مفاهیم و مثال های شی گرایی بسیار  مفید می باشد.

  1. Java How To Program 4,5,6,7,8 Edition: کتابهایی به زبان لاتین که بیشتر تمرکز خود را بر روی قدرت و  کتابخانه های زبان جاوا گذاشته است.

  1. کتاب برنامه نویسی به زبان جاوا نوشته آقای احمدرضا صدیقی: از معدود کتاب های خوب فارسی. نویسنده فردی با سواد بوده و کتاب (هایی) به زبان لاتین هم نوشته است.

  1. جزوه مباحث ویژه ی دانشکده فنی انقلاب اسلامی تهران تالیف و ترجمه آقای عسکر قندچی: جزوه ای در حدود شصت صفحه و تلفیقی از چندین کتاب معتبر با بیان ساده. برای شروع سریع بسیار مفید می باشد. 

زین پس فرض را بر این می گذاریم که مخاطبین ما یکی از پنج منبع فوق را مطالعه خواهند کرد. 

 

 

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

 

اگر سوالی بود (در رابطه با مباحث و فوق) می تونید از طریق ایمیل زیر مطرح کنید: 

 

 info@thevsoft.org 

جلسه چهارم (پنجم اسفند ماه یکهزار و سیصد و هشتاد و نه)   

یادمه یه بار سرکلاس ریاضی گسسته استاد عظیم زاده یه تمرینی دادن که تو خونه حل کنیم و بیاریم. تمرین این بود : 

با ارقام ۰، ۱ ، ۲ می توان چند رشته با وزن زوج و به طول ۱۰ ساخت ؟ 

 

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

 

منطق من این بود:

کمترین وزن زوج صفر است.

بیشترین وزن زوج بیست است.

پس وزن های زوج, اعداد زوج بین 0 تا 20 است.

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

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

بدین ترتیب مجموع تعداد حالت های مختلف برای ساختن وزن های زوج بین صفر تا بیست جواب سوال ما خواهد بود.

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

 

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

 

وراثت و چند ریختی رو بعدا با مثال توضیح میدیم. 

 

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

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد