Օբյեկտ-կողմնորոշված ծրագրավորում
Այս ուղեցույցը ներկայացնում է Eiger-ում օգտագործվող ՕԿԾ (OOP) մոդելը, ներառյալ Դասերը և Դատակլասերը:
Դասեր (Classes)
Դասը սահմանում է օբյեկտների կարուցվածքը: Այն կարող է պարունակել հատկություններ և մեթոդներ։
Սինտաքս
class ClassName
let [modifiers] propertyName
~ `new` մեթոդը գործում է որպես կոնստրուկտոր:
func new(parameters)
~ `this` հղում է հենց իրեն:
this.propertyName = parameter
end
end
Օրինակ
class Person
let private m_name
let private m_age
let private m_birthYear
~ Կոնստրուկտոր
func new(name, age, birthYear)
this.m_name = name
this.m_age = age
this.m_birthYear = birthYear
end
~ Մեթոդ
func summary()
ret (m_name + " (" + m_age.asString + " years old, born " + m_birthYear.asString + ")")
end
end
~ Օբյեկտի ստեղծում դասից
let personOne = Person("John", 25, 2000)
~ `summary` մեթոդի կանչում ՝personOne-ում։
emitln(personOne.summary())
Առանձնահատկություններ
- Հատկությունները հայտարարվում են
let
-ով, ինչպես փոփոխականները: - Թույլտվությունների Փոփոխիչներ (Access Modifiers):
public
(լռելյայն): Հասանելի է ցանկացած վայրից:private
: Հասանելի է միայն դասում:
- Կոնստրուկտոր:
- Հայտարարված է
func new(params)
-ով: - Օգտագործվում է օբյեկտը սկզբնավորելու համար:
- Հայտարարված է
Տվյալների դասեր (Dataclasses)
Տվյալների դասը սահմանում է ստատիկ հատկությունների խումբ: Այն իրեն դասի պես է պահում, բայց չունի կոնստրուկտոր:
Սինտաքս
dataclass ClassName
let [modifiers] propertyName = value
func method(params)
~ ...
end
end
Օրինակ
dataclass math
~ Mathematical Constants
let readonly pi = 3.14159265358979323846
let readonly e = 2.718281828459045
~ get the unsigned value of a number
func abs(n)
if n < 0 then
ret -n
else
ret n
end
end
func sin(theta)
~ ...
end
end
emitln(math.abs(-128))
emitln(math.sin(math.pi))
Առանձնահատկություններ
- Ստատիկ ըստ բնույթի. Դուք չեք ստեղծում տվյալների դասակարգ:
- Թույլտվությունների Փոփոխիչներ (Access Modifiers):
public
(լռելյայն): Հասանելի է ցանկացած վայրից:private
: Հասանելի է միայն տվյալների դասում:
new
ֆունկցիան չի օգտագործվում: