Everything & Nothing

۳ مطلب در مرداد ۱۳۹۲ ثبت شده است

۲۲ مرداد ۹۲ ، ۲۱:۵۶

Stop

بـــــــد به Stop برخوردم hanghead.gif

امیدوارم اشتیاق و ذوقتون رو از دست ندید!!

ولیـــــــــــ قول به زودی آپ کردن رو به شما عزیزان میدهم  ...

راستی یه موضوع دیگر !!!

به طبقه بندی موضوعی ممنون میشم دقت فرمایید !

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

mahnaz hayati
۱۴ مرداد ۹۲ ، ۲۳:۳۰

برنامه نویسی شی گرا


برنامه‌نویسی شیءگرا (Object-Oriented Programming مخفف OOP)

یک شیوه برنامه نویسی است که ساختار یا بلوک اصلی اجزای آن،شی ها می باشند

برنامه نویسی شی گرا توسط آلن کی Alan Kay طراحی شده یعنی اولین قدمهای این سبک برنامه نویسی توسط آلن کی برداشته شده است. اولین زبان شی گرا توسط آلن کی طراحی شد. اسم این زبان Small Talk است. و جرقه ی این ذهنیت بر اساس نحوه عملکرد سلول های زیست محیطی بوده است

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

پس:

هر شی از یک کلاسی تشکیل شده که ویژگی های آن کلاس رو با خودش به ارث برده است.
همانطور که می دانیم اشیا با یکدیگر ارتباط برقرار می کنند. نحوه ارتباط یا فرستادن پیام در اشیا هنگام فراخوانی رفتارها در یک رویداد است.
هر شی خودش یک شناسنامه یا Identifier دارد که ویژگی های آن شی را بیان می کند.

اصول اولیه ای که آلن کی برای برنامه نویسی شی گرا تعیین کرده بود اینها هستن:

هر چیزی یک شی است.
هر برنامه ای شامل اشیا هست که اشیا با ارسال پیام به یکدیگر تعیین می کنند که چه کاری باید الان انجام بشود.
هر شی یک حافظه Memory برای خودش دارد که بتوان به وسیله آن اشیای دیگر را ساخت.
هر شی خودش از یک کلاس Class هست.

شئی گرایی در زبان ++C

همه زبان های برنامه نویسی شی گرا در سه چیز مشترک هستند : کپسوله سازی (Encapsulation)‏ ، چند ریختی (Polymorphism) و وراثت (Inheritance).

کپسوله سازی (Encapsulation)‏

عبارت برنامه (کد) + داده ها = به وجود آمدن یک شی

(من برای راحت تر هضم شدن مطلب، برای کد و داده یک نشانه گذاشتم

عبارت برنامه = فرمول های ریاضی میباشند ، داده ها = اعداد ما میباشند)

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

شی ممکن است محلی (خصوصی private ) یا عمومی ( public ) باشد .

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

شی عمومی : بخش های دیگری از برنامه نیز ممکن است به آنها دسترسی داشته باشند.

چند ریختی (Polymorphism)

مفهوم چندریختی اغلب توسط عبارت "یک رابط چندین روشی" بیان می شود.

در اینجا هم به یک نشانه دیگر برای فهم مطلب میپردازم

بیس راه اندازهی ماشین رو در نظر بگیرید ...اما می توان از این ساختار یک بنز طراحی کرد یا یک ژیان

پس تفاوت در متد ها = چند ریختی میشود .

وراثت (Inheritance)

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

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

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

شی گرایی در زبان #C

شی گرایی (oop) در #C بر چند پایه استوار است که به قرار زیرند:

وراثت (Inheritance)
کپسوله سازی (Encapsulation)‏
چند ریختی (Polymorphism)
تجرید، انتزاع (Abstraction)
رابط (Interface)

اکنون به توضیح مختصر هر یک می پردازیم:

وراثت (Inheritance)

پدر و فرزندی را در نظر بگیرید . هر پدری مشخصات فردی به خصوصی دارد . فرزند وی می تواند همه خصوصیات او را به ارث برد و خصوصیتهای دیگری نیز داشته باشد که پدرش ندارد . این یعنی ارث بری !

قابلیت استفاده دوباره از کد (Reusability) یکی از مزیات اصلی ارث بری است.

کپسوله سازی (Encapsulation)‏


در #C برای کپسوله کردن از Access Modifier های Private ، Protected ، Public استفاده شود.

هدف Encapsulationاین است که ما را از پرداختن به ریز موضوعات رها کند.

چند ریختی (Polymorphism)

به توضیح بالا مراجعه شود !!

تجرید، انتزاع (Abstraction)

باز هم اول با مثالی غیر برنامه نویسی شروع میکنم:

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

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

پس مفهوم انسانیت از آنها انتزاع شده است.

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

برای تعریف یک کلاس مجرد از کلمه کلیدی abstract استفاده می کنیم.

رابط (Interface)


اینترفیس در برنامه نویسی همانند همان کلاس است تنها با این تفاوت که هیچکدام از اعضای آن پیاده سازی نمی شوند . در واقع یک اینترفیس گروهی از متدها ، خصوصیات ، رویدادها و Indexer ها هستند که در کنار هم جمع شده اند. اینترفیس ها را نمی توان Instantiate (وهله سازی) کرد (یعنی نمی توان وهله ای از یک اینترفیس ایجاد کرد !) . تناه چیزی که اینترفیس دارا می باشد امضای (signature) تمامی اعضای آن می باشد. به ای معنی که ورودی و خروجی متدها ، نوع property ها و ... در آن تعریف می شوند ولی چیزی پیاده سازی نمی شود. اینترفیس ها سازنده و فیلد ندارد. یک اینترفیس نمی تواند Operator Overload داشته باشد و دلیل آن این است که در صورت و جود ویژگی ، احتمال بروز مشکلاتی از قبیل ناسازگازی با دیگر زبانهای .Net مانند VB.Net که از این قابلیت پشتیبانی نمی کند وجود داشت. نحوه تعریف اینترفیس بسیار شبیه تعریف کلاس است تنها با این تفاوت که در اینترفیس پیاده سازی وجود ندارد.

mahnaz hayati
۰۸ مرداد ۹۲ ، ۱۸:۰۹

Pysical Address ( لایه اول ) :

در قسمت قبل به توضیح مختصری از لایه ها پرداختیم که " فقط جهت اطلاع " بود !

در این بخش می خوایم یه توضیح دقیق و جامعی از هر لایه داشته باشیم که مطلب زیبا برامون جا بیفته smile

پس کلا بحث امروزمون فقط شامل لایه اول که همون Pysical Address ما بود میباشد.


 Pysical Address ( لایه اول ) :

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

پس در اینجا به توضیح انواع کابل ها می پردازیم.


انواع کابل ها :

از اونجایی که به سرچ علاقه خاصی دارم برای پیدا کردن یه مطلب کوچولو که بتونم در این مبحث بذارم به این سایت برخورد کردم که انصافا عالی در مورد کابل ها توضیح داده ،بنابراین ترجیح میدم سکوت کنم در این مبحث و فقط لینک این سایت رو براتون می ذارم !!  nocomment.gif


http://www.mums.ac.ir/hit/fa/cablenetwork


فقط یک توضیح کوتاه در مورد علت استفاده از کابل Straight  و Cross گفته میشود!


PC و Router در پین های 1و 2 ارسال داده و در پین های 3و 6 دریافت داده دارند

hub و Switch در پین های 1و2 دریافت داده و در پین های 3و 6 ارسال داده دارند


زمانی که قرار است یک PC و Router به یکدیگر اتصال پیدا کنند ما از کابل Cross استفاده میکنیم چرا که هر دو Device در پین های مشابه کار میکنند و نیاز به جا به جایی دو سر کابل داریم .

 اما هنگامی که می خواهیم یک PC  و Switch را به یک دیگر متصل کنیم از کابل Straight استفاده میکنیم چرا که هر دو Device در پین های مخالف کار میکنند و دیگر نیازی به جا به جایی دو سر کابل نیست.

بنابراین صورت کلی Device Connections ما بدین گونه است:

pc To pc = Cross

Switch To Switch = Cross

Router To Router = Cross

pc To Router = Cross

pc To Switch = Straight

Switch To Router = Straight


انواع توپولوژی ها :

1- توپولوژی BUS :

اولین توپولوژی ارایه شده بود.

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

تمام سیستم ها از طریق کابل Cross  به یگدیگر متصل میشوند که به دو صورت می توان این سیستم ها را به یکدیگر متصل نمود

1-1 Thick Ethernet: همان طور که در شکل میبینید ضخامت کابل در این نوع توپولوژی کلفت تر بوده و علت آن مسافت بیشتری است که می تواند ساپورت کند . در این مدل که Ten base 5 نیز به آن گفته میشود تا 500 متر را می توان ساپورت کرد .

1-2 Thin Ethernet: ضخامت این کابل نازک تر بوده و تا 185 متر را می تواند تحت شعاع خود قرار دهد و به آن Ten base 2 نیز گفته میشود.



2- توپولوژی Ring:

مانند توپولوژی Hub است با این تفاوت که از یک Token استفاده کردند . این Token بین تمام سیستم ها در حال چرخش میباشد پس زمانی که قرار است Data یی از یک PC فرستاده شود این Token در header آن سیستم قرار میگیرد و تا زمانی که داده ارسال نشود Token آزاد نمیشود پس سیستم های ما بقی دیگر نمی توانند ارسال داده داشته باشند چرا که برای ارسال داده نیازمند Token میباشند.

در این توپولوژی دیگر collision به وجود نمیاید.




3- توپولوژی Mesh :

این توپولوژی تقریبا منسوخ شده چرا که اصلا توپولوژی منطقی و کاربردی ای نیست به همین علت از توضیح به آن خودداری میکنم :P


4 -توپولوژی Star:

در این نوع توپولوژی از یک Device مرکزی (Hub یا Switch) استفاده میکنیم.

Switch ها بعد از Hub به وجود آمدند و چون Mac Address سیستم ها که یک آدرس Unic شده است و هر سیستم MAC منحصر به فرد خود را داراست میشناختند نسبت به Hub مقبولیت بیشتری پیدا کردند و امروزه بیشترین استفاده از توپولوژی Star با استفاده از Switch ها میباشد.


تفاوت Switch  و Hub :

همان طور که گفته شد وقتی داده ای در توپولوژی Hub از سیستمی ارسال میشد چون Hub نمی توانست MAC سیستم را تشخیص دهد آن Data را برای تمام سیستم ها ارسال میکرد که در این زمان ما Collision داشتیم.

اما در Switch به دلیل اینکه MAC هر سیستم را میشناسد ، وقتی داده ای از یک سیستم آماده ارسال میشود Header آن را باز کرده و از روی Mac Address آن می فهمد که دریافت کننده ی این داده کدام یک از سیستم هاست ، بنابراین داده را فقط به سیستم مورد نظر ارسال میکند. در این صورت Collision ی رخ نمیدهد.




mahnaz hayati