مفاهیم ، مبانی و اصول شی گرایی (OOP) قسمت اول
شی گرایی یکی از مهم ترین و کاربردی ترین مباحث در برنامه نویسی پیشرفته و ساختیافته می باشد .
در حقیقت شی گرایی نوعی طرز تفکر خاص در پیاده سازی برنامه هاست ، به
عبارتی برنامه نویس با بخش های مختلف برنامه به همان صورتی که با اشیا در
دنیای واقعی رفتار می کند ، ارتباط برقرار می نماید .
مثال هایی از دنیای خارج و همچنین شبیه نمودن اصول شی گرایی به اصول وراثت و….
به یادگیری و تفهیم شی گرایی کمک می نماید .
کلاس ها مهم ترین جزء شی گرایی هستند و در حقیقت کلاس ، تولید کننده یک شی محسوب می شود .
برای برنامه نویسی شی گرا و کپسوله کردن برنامه تسلط به مفاهیم زیر الزامیست :
1- متدها (رفتار ها)
2- متغیر ها
3- خصیصه ها
هر سه بخش فوق می توانند Public , Private یا Protected باشد .
متغیر ها و متد های Private یا خصوصی فقط در همان کلاس قابل دسترسی هستند و
از دنیای خارج پنهانند ، متغیر ها و متد های Public یا عمومی از طریق
دنیای خارج قابل دسترسی هستند . در مورد Protected هم در بخش وراثت صحبت
خواهیم کرد .
در صورتی که نوع متغیر public یا private تعیین نگردد (یا از Dim استفاده
شود) به صورت پیشفرض متغیر Private در نظر گرفته خواهد شد .
شما میتوانید در دنیای خارج برای خود مثال هایی از کلاس ها و اشیا بزنید ،
به عنوان مثال کلاس انسان را در نظر بگیرید (منظور از کلاس مجموعه رفتار و
خصیصه های انسانی است)
فرض کنید این کلاس شامل دو رفتار “رشد کردن” و “حرف زدن” و همچنین دارای سه خصیصه “سن” و “قد” و “رنگ چشم” باشد .
البته می توان سن و قد و رنگ چشم را به عنوان متغیر نیز در نظر گرفت ولی
به دلایلی که بعدا ذکر خواهد شد ما این دو را به عنوان خصیصه در نظر
میگیریم .
خوب ما یک کلاس به نام انسان داریم که شامل دو متد (رفتار) و سه خصیصه می باشد .
حال می خواهیم یک شی جدید از این کلاس ایجاد نماییم . نام این شی جدید را “آقا فریبرز” میگذاریم .
پس ما یک آقا فریبرز داریم که قادر است حرف بزند و رشد کند ! چرا ؟!
جواب واضح است چون یک شی از کلاس انسان است و انسان همانطور که ما تعیین
کردیم رشد می کند و حرف میزند ، بنابراین هر شیي که از این کلاس ایجاد گردد
خواص و رفتاری مانند این کلاس خواهد داشت .
فرض می کنیم این شی در کنترل ماست و میخواهیم که 2 سال رشد کند . این رشد
کردن بر خصیصه های سن و قد تاثیر می گذارد ، البته واضح است که بر روی
خصیصه رنگ چشم تاثیری ندارد .
خوب من قصد دارم تمامی حرف های بالا را در دنیای برنامه نویسی ایجاد کنم .
پس به سراغ کد نویسی رفته و یک پروژه جدید به نام OOP ایجاد نمایید ، وارد
منوی WebSite شده و گزینه Add new item را انتخاب کنید و از لیست Class را
انتخاب و نام فایل را به Human تغییر دهید (Human.Cs در سی شارپ و
Human.Vb در ویژوال بیسیک) و بر روی دکمه Add کلیک نمایید .
پیامی مبنی بر اضافه کردن این کلاس به پوشه App_Code داده میشود ، شما
گزینه Yes را انتخاب نمایید تا کلاس Human ایجاد شده و در پوشه App_Code
قرار گیرد .
این فایل را باز نمایید احتمالا کلاس شما به شکل زیر خواهد بود :
Imports Microsoft.VisualBasic
Public Class Human
End Class |
خوب این کلاس کاملا خام است و هیچ رفتار و خصیصه ای ندارد .
اکنون متد (رفتار) های رشد کردن (Grow) و حرف زدن (Talk) را به کلاس اضافه می کنیم :
Imports Microsoft.VisualBasic
Public Class Human
Public Sub Grow()
End Sub
Public Function Talk(ByVal Words As String)
Return “He said : “ + Words
End Function
End Class |
متد Grow یک ساب روتین است چرا که هیچ خروجی ندارد ولی Talk یک تابع است زیرا که مقدار بازگشتی ( خروجی ) دارد .
خوب متد Grow همانطور که گفتیم بر روی خصیصه های قد و سن تاثیر گذار است
پس ابتدا دو متغیر به نام Age و Height برای سن و قد (در قسمت بعد این
متغیر ها را به خصیصه تبدیل می کنیم ) اضافه می کنیم :
Imports Microsoft.VisualBasic
Public Class Human
Dim Age As Integer = 0 Dim Height As Integer = 0
Public Sub Grow()
End Sub
Public Function Talk(ByVal Words As String)
Return “He said : “ + Words
End Function
End Class |
مقادیر اولیه این دو متغیر را به صورت پیشفرض 0 قرار می دهیم (شما میتوانید مقادیر دیگری قرار دهید )
خوب تاثیری که متد Grow بر روی سن و قد میگذارد را به صورت زیر تعریف می کنیم :
Imports Microsoft.VisualBasic
Public Class Human
Dim Age As Integer = 0 Dim Height As Integer = 0
Public Sub Grow()
Age = Age + 1 Height = Height + 10
End Sub
Public Function Talk(ByVal Words As String)
Return “He said : “ + Words
End Function
End Class |
متد Grow باعث میشود که 1 واحد به متغیر Age و 10 واحد به متغیر Height اضافه شود .
خوب کلاس ما تا حدودی تکمیل شده است ، میتوانیم آن را تست نماییم .
برای تست یک صفحه Default.aspx به پروژه اضافه کنید ، در ساب روتین مربوط
به لود صفحه ابتدا شی “آقا فریبرز ” را ساخته و با آن کار خواهیم کرد :
Dim Agha_Fariborz As New Human |
با این کار ما یک شی به نام Agha_Fariborz از کلاس Human ایجاد کردیم .
حال با صدا زدن متد Grow اقا فریبرز یک سال بزرگ شده و 10 سانتی متر بلند قد تر خواهد شد :
Dim Agha_Fariborz As New Human Agha_Fariborz.Grow() |
شما میتوانید مقدار متغیر سن را قبل و بعد از فراخوانی متد Grow() چاپ
کنید تا متوجه رشد آقا فریبرز بشوید ولی چون متغیر های Age و Height محلی
(Private) هستند نمی توانیم از خارج کلاس به آنها دسترسی پیدا کنیم ،
بنابراین متغیر های Height و Age را عمومی (Public) تعریف می کنیم تا از
خارج از کلاس به آنها دسترسی داشته باشیم پس کلاس Human به شکل زیر خواهد
بود :
Imports Microsoft.VisualBasic
Public Class Human
Public Age As Integer = 0 Public Height As Integer = 0
Public Sub Grow()
Age = Age + 1 Height = Height + 10
End Sub Public Function Talk(ByVal Words As String)
Return “He said : “ + Words End Function
End Class |
اکنون قادریم از خارج از کلاس به این متغیر ها دسترسی پیدا کرده و مقادیر
آن ها را قبل و بعد از اجرای متد چاپ کنیم برای این کار دو Label در صفحه
Default.aspx قرار می دهیم یکی برای نمایش مقدار متغیر سن قبل از اجرای متد
Grow و یکی برای نمایش این مقدار بعد از اجرای متد داریم :
Partial Class _Default Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Agha_Fariborz As New Human
Lbl_Before.Text = Agha_Fariborz.Age
Agha_Fariborz.Grow()
Lbl_After.Text = Agha_Fariborz.Age
End Sub End Class |
اکنون صفحه Default.aspx را در مرورگر خود مرور کرده تا متوجه تغییرات شوید .
همانطور که می بینید مقدار چاپ شده قبل از اجرای متد 0 و بعد از آن به 1 تغییر یافته است .
متد دیگر ما Talk بسیار ساده است کافیست در ورودی یک کلمه به آن بدهیم تا به همراه جملهHe Said برگردانده شود .
برای استفاده از این متد داریم :
Partial Class _Default Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Agha_Fariborz As New Human Response.Write(Agha_Fariborz.Talk(“Hello!”))
End Sub End Class |
اگر این صفحه را در مرورگر باز کنید نوشته ” He said : Hello! ” را در صفحه مشاهده خواهید کرد .
تیپ شخصیتی INFP
تیپ شخصیتی INFP
INFP
ها آرام ، راحت و تایید کننده هستند. آنها مطابق ارزش های درونی خود کار
می کنند ، به روی ایده های نو گشوده اند اما اگر یکی از ارزش های اصلی آنها
رعایت نشود ناراحت می شوند. داشتن تعصب و تعهد نسبت به آنچه به آن اعتقاد
دارند بسیار ضروری است. آنها زندگی درونی قدرتمند و احساسات پیچیده دارند.
گاه درک کردن INFP ها دشوار است زیرا احساساتشان اغلب درونی است از این رو
نکات مهم خود با افراد کمی در میان می گذارد.
محل کار
- از مقررات ، نظم ، رویه ، برنامه و سروقت بودن خوششان نمی آید.
- نیازی
به این ندارند که ارزش های خود را به دیگران تحمیل کنند. آنها ترجیح می
دهند که به آرامی نظراتشان را با دیگران در میان بگذارند و آنها را متقاعد
سازند. - آنها اغلب موفق و مصمم هستند و به روشی آرام برنامه های خود را دنبال می کنند .
- اگر با گروهی باشند می توانند رهبری آنها را بدست بگیرند .
- در شرایط رقابت آمیز ممکن است با مشکلاتی روبه رو شوند .
- به
استقلال و خود مختاری بها می دهند. از قطع شدن حواس خود خوششان نمی آید.
دوست دارند هر کاری را که می کنند به نحو احسن انجام بدهند . - می توانند صبورانه کارهای سنجیده را انجام دهند .
- می خواهند به خاطر کارشان مورد تشویق و تحسین قرار بگیرند .
- خودشان را با معیارهای سطح بالا مقایسه می کنند .
- از جوانب مختلف به مسایل نگاه می کنند ممکن است گاهی قاطعیت لازم نداشته باشند زیرا نمی دانند برای آنها چه چیزی اهمیت دارد .
- اگر نتوانند هدف های خود را تحقق ببخشند ممکن است مایوس و دلسرد شوند.
عناوین شغلی
- بازیگر
- معمار
- هنرمند
- آهنگساز
- مشاور
- سردبیر، ویراستار
- پزشک کل نگرا
- مفسر ، مترجم
- روزنامه نگار
- کتابخانه دار
- ماساژدرمانگر
- موسیقی دان
- حرفه درمانگر
- عکاس
- روان درمانگر
- معلم دینی
- نویسنده
- پژوهشگر
- دانشمند
- دانشمند اجتماعی
- آسیب شناس کلام
- آموزگار
ارتباط با دیگران
- به اصالت و عمق روابط بها می دهند .
- وفادار و صمیمی هستند ، نسبت به دوستان وافراد خانواده خود متعهدند .
- محطاط و ملاحظه کار هستند و با گروهای کوچک تر به راحتی بیش تری کنار می آیند.
- می توانند سرگرم کننده باشند.
- از این توانایی بر خوردارند که از دیگران مراقبت و آنها را تشویق و تایید کنند .
- از کسانی که صرف وقت کنند تا رویاها ، هدف ها و الهامات آنها را درک کنند تشکر و قدر دانی می کنند .
- اغلب به این دلیل که هم می خواهد در خلوت با خود باشد و هم علاقمند به معاشرت با دیگران هستند ، در تعارض می شوند .
- به دیگران علاقمند و پر توجهند ، اما در مواقعی بی تفاوت به نظر می رسند.
- یا در جریان کمک به دیگران غرق می شوند یا در بحر تحقق بخشیدن به رویاهای خود فرو می روند.
- اغلب تصمیم نهایی خود را با دیگران در میان می گذارند .
- می توانند نسبت به محیط خود حساس باشند ، صداهای بلند را دوست ندارند زیرا حواسشان را پرت می کند.
- شریکی را برای خود می خواهند که با ارزش ها و هدف های آنها سهیم باشد .
- در متعهد شدن محطاط عمل می کنند اما وقتی متعهد شدند، تعهدشان بلند مدت و پر دوام است .
اوقات فراقت
INFP
ها ترجیح می دهند اوقات خود را به تنهایی صرف کنند. در ضمن دوست دارند با
دوستان نزدیک خود به موزه ، سینما و یا به دامان طبیعت بروند. آنها از یاد
گرفتن مطالب جدید لذت می برند. INFP ها به درک معانی زندگی علاقمند هستند.
پیشنهاد
- وقت بیش از اندازه صرف بررسی امکانات و احتمالات نکنید. به عمل و اقدام هم توجه داشته باشید.
- راهی پیدا کنید تا به ایده ال های خود امکان ابراز بدهید. ارزش ها ، پنداره ها و عواطف خود رابا نزدیکانتان در میان بگذارید.
- ریسک کنید خودتان و کارتان را به جهان عرضه نمایید.
- به نیاز ها و خواسته های دیگران به بهای بی توجهی به خواسته ها و نیاز های خود توجه نکنید.
- بیاموزید که حد مرزی در نظر بگیرید. بیاموزید که در مواقعی نه بگویید.
- از مسامحه کردن اجتناب کنید. به ضرب الاجل ها توجه داشته باشید.
- به تعهدات خود عمل کنید. مراقب کمال طلبی باشید.
- به جای اینکه تنها به منابع خود اتکا کنید از دیگران هم کمک بگیرید.
- وقتی مسئله ای دارید از یکی از دوستان خود بخواهید به حرف های شما گوش بدهد. اما تا وقتی حرفتان را تمام نکرده اید راهنمایی نکند.
- از کسانی که به آنها اعتماد دارید تقاضای کمک کنید. از انتظارات و توقعات بیجا دست بکشید.
- وقتی تعارض بروز می کند ، اعتراض خود رابیان کنید. اگر مخالفت های خود را روی هم انباشت کنید روزی می رسد که منفجر شود .
- به دیگران توصیه و آرامش بدهید.
- به ارزش های خود بها بدهید و بر اساس آنها تصمیم گیری کنید.
- به
نقاط قوت خود و از جمله به آرمان گرایی ، همدلی ، خلاقیت ، حساسیت ، فکر
کردن ، محبت کردن ، بکر بودن ، سازگاری و کنجکاوی خود بهای لازم را بدهید .