سلام درود خدمت همراهان همیشگی سایت پی وی لرن . با آموزش زبان برنامه نویسی #F همراهتون هستیم. در این قسمت به معرفی Classes در #F می پردازیم و چون بدنه constructor شامل let bindings و do bindings است. constructor یا سازنده یک کلاس در #F رو بررسی می نماییم.
کلاس ها انواعی هستند که می توانند آبجکت هایی را که دارای خواص، روش ها و رویدادها باشند، نشان می دهند .’آن ها برای مدل سازی اقدامات، فرآیندها و هر نهاد مفهومی در برنامه های کاربردی مورد استفاده قرار می گیرند.
سینتکس تعریف یک نوع کلاس به شرح زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // Class definition: type [access-modifier] type-name [type-params] [access-modifier] ( parameter-list ) [ as identifier ] = [ class ] [ inherit base-type-name(base-constructor-args) ] [ let-bindings ] [ do-bindings ] member-list ... [ end ] // Mutually recursive class definitions: type [access-modifier] type-name1 ... and [access-modifier] type-name2 ... ... |
جایی که،
constructor کدی است که یک instance از نوع کلاس را ایجاد می کند.
در اف شارپ ، constructor کمی متفاوت از سایر زبان های Net. کار می کنند. در تعریف کلاس، آرگومان constructor اولیه به عنوان لیست پارامتر توصیف می شود.
بدنه constructor شامل let bindings و do bindings است.
شما می توانید constructor های اضافی را با استفاده از کلمه کلیدی new برای یک عضو اضافه کنید.
1 | new (argument-list) = constructor-body |
مثال زیر این مفهوم را نشان می دهد .
مثال برنامه زیر یک کلاس line با یک constructor ایجاد می کند که طول خط را محاسبه می کند در حالی که یک آبجکت از کلاس ایجاد می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | type Line = class val X1 : float val Y1 : float val X2 : float val Y2 : float new (x1, y1, x2, y2) as this = { X1 = x1; Y1 = y1; X2 = x2; Y2 = y2;} then printfn " Creating Line: {(%g, %g), (%g, %g)}\nLength: %g" this.X1 this.Y1 this.X2 this.Y2 this.Length member x.Length = let sqr x = x * x sqrt(sqr(x.X1 - x.X2) + sqr(x.Y1 - x.Y2) ) end let aLine = new Line(1.0, 1.0, 4.0, 5.0) |
هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.
1 2 | Creating Line: {(1, 1), (4, 5)} Length: 5 |
Let Bindings در تعریف کلاس به شما اجازه می دهد فیلدهای خصوصی و توابع خصوصی را برای کلاس های #F تعریف کنید.
1 2 3 4 5 6 7 | type Greetings(name) as gr = let data = name do gr.PrintMessage() member this.PrintMessage() = printf "Hello %s\n" data let gtr = new Greetings("Zara") |
هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.
1 | Hello Zara |
لطفا توجه داشته باشید که استفاده از self-identifier gr برای کلاس Greetings است.
در این قسمت به معرفی Classes در #F پرداختیم و چون بدنه constructor شامل let bindings و do bindings است. constructor یا سازنده یک کلاس در #F رو بررسی نمودیم. Let Bindings تعریف فیلدها و توابع خصوصی رو در اف شارپ امکان پذیر می سازد.