مفاهیم ، مبانی و اصول شی گرایی (OOP) قسمت اول

مفاهیم ، مبانی و اصول شی گرایی (OOP) قسمت اول

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

۱- متدها (رفتار ها)
۲- متغیر ها
۳- خصیصه ها

هر سه بخش فوق می توانند Public , Private یا Protected باشد .
متغیر ها و متد های Private یا خصوصی فقط در همان کلاس قابل دسترسی هستند و از دنیای خارج پنهانند ، متغیر ها و متد های Public یا عمومی از طریق دنیای خارج قابل دسترسی هستند . در مورد Protected هم در بخش وراثت صحبت خواهیم کرد .
در صورتی که نوع متغیر public یا private تعیین نگردد (یا از Dim استفاده شود) به صورت پیشفرض متغیر Private در نظر گرفته خواهد شد .

شما میتوانید در دنیای خارج برای خود مثال هایی از کلاس ها و اشیا بزنید ، به عنوان مثال کلاس انسان را در نظر بگیرید (منظور از کلاس مجموعه رفتار و خصیصه های انسانی است)
فرض کنید این کلاس شامل دو رفتار “رشد کردن” و “حرف زدن” و همچنین دارای سه خصیصه “سن” و “قد” و “رنگ چشم” باشد .
البته می توان سن و قد و رنگ چشم را به عنوان متغیر نیز در نظر گرفت ولی به دلایلی که بعدا ذکر خواهد شد ما این دو را به عنوان خصیصه در نظر میگیریم .
خوب ما یک کلاس به نام انسان داریم که شامل دو متد (رفتار) و سه خصیصه می باشد .
حال می خواهیم یک شی جدید از این کلاس ایجاد نماییم . نام این شی جدید را “آقا فریبرز” میگذاریم .
پس ما یک آقا فریبرز داریم که قادر است حرف بزند و رشد کند ! چرا ؟!
جواب واضح است چون یک شی از کلاس انسان است و انسان همانطور که ما تعیین کردیم رشد می کند و حرف میزند ، بنابراین هر شیی که از این کلاس ایجاد گردد خواص و رفتاری مانند این کلاس خواهد داشت .
فرض می کنیم این شی در کنترل ماست و میخواهیم که ۲ سال رشد کند . این رشد کردن بر خصیصه های سن و قد تاثیر می گذارد ، البته واضح است که بر روی خصیصه رنگ چشم تاثیری ندارد .
خوب من قصد دارم تمامی حرف های بالا را در دنیای برنامه نویسی ایجاد کنم .

پس به سراغ کد نویسی رفته و یک پروژه جدید به نام 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 AsInteger = 0

    Public Sub Grow()

    End Sub

    Public Function Talk(ByVal Words As String)

        Return “He said : ” + Words

    End Function

End Class

مقادیر اولیه این دو متغیر را به صورت پیشفرض ۰ قرار می دهیم (شما میتوانید مقادیر دیگری قرار دهید )

خوب تاثیری که متد Grow بر روی سن و قد میگذارد را به صورت زیر تعریف می کنیم :

Imports Microsoft.VisualBasic

Public Class Human

    Dim Age As Integer = 0

    Dim Height AsInteger = 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 باعث میشود که ۱ واحد به متغیر Age و ۱۰ واحد به متغیر Height اضافه شود .
خوب کلاس ما تا حدودی تکمیل شده است ، میتوانیم آن را تست نماییم .
برای تست یک صفحه Default.aspx به پروژه اضافه کنید ، در ساب روتین مربوط به لود صفحه ابتدا شی “آقا فریبرز ” را ساخته و با آن کار خواهیم کرد :

Dim Agha_Fariborz As New Human

با این کار ما یک شی به نام Agha_Fariborz از کلاس Human ایجاد کردیم .
حال با صدا زدن متد Grow اقا فریبرز یک سال بزرگ شده و ۱۰ سانتی متر بلند قد تر خواهد شد :

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 را در مرورگر خود مرور کرده تا متوجه تغییرات شوید .
همانطور که می بینید مقدار چاپ شده قبل از اجرای متد ۰ و بعد از آن به ۱ تغییر یافته است .
متد دیگر ما 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! ” را در صفحه مشاهده خواهید کرد .

شاید این مطالب را هم دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.