Funktsional interfeys faqat bitta mavhum usulni o'z ichiga olgan interfeysdan boshqa narsa emas . U boshqa statik va standart usullarni o'z ichiga olishi mumkin , lekin faqat bitta mavhum usul bo'lishi kerak.
Keling, quyidagi interfeysni olaylik:
@FunctionalInterface interfeysi MyNumber{ double getValue();
}
Interfeys bitta mavhum usulni o'z ichiga oladi ( barcha interfeys usullari sukut bo'yicha mavhum ekanligini
unutmang, shuning uchun mavhum modifikatordan foydalaning.
shart emas). Ushbu interfeys faqat bitta mavhum usulni o'z ichiga olganligi sababli , u funktsional interfeys deb ataladi . Funktsional interfeysda mavhum usul uning maqsadini belgilaydi .
cheni. Ushbu misolda interfeys ikki tomonlama turdagi ba'zi qiymatlarni qaytarish uchun mo'ljallangan.
Yuqoridagi misolda bo'lgani kabi, kompilyatorga interfeysning ishlashi haqida xabar beruvchi @FunctionalInterface izohini ham qo'shishingiz mumkin .
Funktsional interfeys nima ekanligini tushunganimizdan so'ng, uning qanday amalga oshirilishini ko'rib chiqamiz. Ilgari siz
interfeyslarni amalga oshirish uchun sinflardan qanday foydalanishni o'rgandingiz. Ushbu bobda siz interfeyslarni amalga oshirish uchun lambda ifodalaridan qanday foydalanishni o'rganasiz.
Lambda ifodasi sintaksisi:
(parametrlar ro'yxati) -> lambda ifodasi tanasi
Ehtimol, endi bu sintaksis ma'nosiz ko'rinadi. Keling, ko'rsatadigan bir nechta misollarni ko'rib chiqaylik
foydalanishni rad eting.
Aytaylik, siz getValue() usulini qo'llamoqchisiz
quyida bayon qilinganidek:
ikki marta getValue()
{
qaytish 12.3;
}
Usul hech qanday parametrlarni olmaydi va shunchaki 12.3 qiymatini qaytaradi. Uni quyidagi lambda ifodasi sifatida qayta yozish mumkin:
() -> 12,3;
Lambda ifodasi chap tomonda bo'sh qavsga ega; bu usul qabul qilmasligini ko'rsatadi
parametrlari. O'ng tomoni 12.3 raqamidan iborat. U
buyruqqa tengdir
qaytish 12.3;
qaytish kalit so'zisiz .
Keling, yana bir misolni ko'rib chiqaylik. Faraz qilaylik, siz getValue() ni shaklda amalga oshirmoqchisiz
double getValue()
{ qaytish 2 + 3; }
Usul hech qanday parametrlarni olmaydi va 2 va 3 yig'indisini qaytaradi. Usul lambda ifodasi sifatida qayta yozilishi mumkin:
() -> 2 + 3;
Keling, murakkabroq misolni ko'rib chiqaylik.
Aytaylik, getValue() ni amalga oshirish quyidagicha ko'rinadi:
double getValue() { int counter = 1; int sum = 0; esa (counter<5) {
summa = summa + hisoblagich; hisoblagich++;
}
qaytarish summasi; }
Uni quyidagi lambda ifodasi sifatida qayta yozish mumkin:
() -> {
int hisoblagichi = 1; int sum = 0;
esa (qarshi<5)
{
summa = summa + hisoblagich;
hisoblagich++;
}
qaytarish summasi;
};
E'tibor bering, bu lambda ifodasi avvalgi ikkitasidan bir oz farq qiladi. Birinchidan, qo'zichoq tanasi
ha-iboralar - uning o'ng tomoni - bitta ifodadan iborat emas ( oldingi ikkita misolda 12,3 yoki 2 + 3 kabi).
Buning o'rniga, u while iborasini o'z ichiga oladi. Oldingi ikkita lambda ifoda tanasi mi-ifoda organlari deb ataladi , chunki ular bitta ifodadan iborat. Boshqa tomondan, uchinchi misoldagi lambda ifodasining tanasi blok tanasi deb ataladi.
Blok tanasidan foydalanganda lambda ifodasining tanasi bir nechta buyruqlardan iborat bo'lishi mumkin. Tana blokini yaratish uchun yuqoridagi misolda bo'lgani kabi buyruqlarni jingalak qavslar ichiga olish kifoya .
Yopuvchi qavsdan keyin nuqta- vergul (;) ham qo'yilishi kerak . Nihoyat, blok tanasida bir nechta ifodalar mavjud bo'lganligi sababli , qiymatni qaytarish uchun return kalit so'zidan foydalanishingiz kerak. Bu birinchi ikkita misoldan farq qiladi , bu erda return kalit so'zi
yo'q edi.
Parametrsiz lambda iboralari qanday ishlashini bilganingizdan so'ng, parametrli lambda ifodalarining misollarini ko'rib chiqishimiz mumkin . Aytaylik, bizda MyNumberPara nomli funktsional interfeys mavjud :
@FunctionalInterface interfeysi MyNumberPara{ double getValue2(int n, int m);
}
Interfeysda ikkita juftlikdan iborat getValue2() usuli mavjud
metr n va m.
Aytaylik, getValue2() ni amalga oshirish quyidagicha bo'lishi kerak:
double getValue2 (int n, int m)
{
qaytish n+m;
}
Usul quyidagi lambda sifatida qayta yozilishi mumkin
janglar:
(n, m) -> n + m;
Lambda ifodasining chap tomonida ikkita parametr, o'ng tomonida esa qaytarish qiymatini baholash uchun ifoda mavjud. Lambda ifodalarini ishlatganda , parametrlarning ma'lumotlar turini aniq ko'rsatish shart emas. Biroq, getValue2() ga qo'ng'iroq qilganingizda , to'g'ri ma'lumot turini kiritishingiz kerak.
GetValue2() usulini qanday chaqirish kerakligi muhokama qilinadi
keyinroq.
Endi getValue2() usuli quyidagicha amalga oshirilishi kerak deylik :
double getValue2 (int n, int m)
{
agar (n > 10)
m qaytarish;
Usul quyidagi lambda ifodasi sifatida qayta yozilishi mumkin:
(n, m) -> {
agar (n > 10)
m qaytarish;
};
Endi biz asosiy lambda iboralarining sintaksisini tushunganimizdan so'ng,
keling, ushbu usullarni qanday chaqirishni ko'rib chiqamiz. Buning uchun sizga kerak
ikkita narsani qiling.
Avval siz har bir funktsional interfeysga havolani e'lon qilishingiz kerak . Bu shunday amalga oshiriladi:
Mening raqamim 1; MyNumberPara raqami2;
Sizga eslatib o'tamanki, interfeyslarni instantsiya qilib bo'lmaydi, shuning uchun siz shakl belgilaridan foydalana olmaysiz:
MyNumber raqami1 = yangi MyNumber();
Biroq, siz interfeysga havolani e'lon qilishingiz mumkin.
Ulanishlarni e'lon qilgandan so'ng, siz ularga qo'zichoqni belgilashingiz mumkin
ha - ifodalar.
Parametrlari bo'lmagan lambda iboralariga 1-raqam , ikkita parametrli lambda ifodalari esa 2- raqam bilan belgilanishi mumkin .
Keyin nuqta (.) operatori yordamida getValue () va getValue2() ni chaqirish uchun num1 va num2 nomlaridan foydalanishingiz
mumkin. Keling, uning qanday ishlashining to'liq misolini ko'rib chiqaylik.
bu mexanizmni eritadi.
NetBeans-ni ishga tushiring va nomli yangi loyiha yarating
LambdaDemo.
Yaratilgan kodni quyidagi bilan almashtiring:
1 paket lambdemo;
2
3 umumiy sinf LambdaDemo {
to'rtta
5
umumiy statik void main(String[] args) {
6
|
|
|
7
|
Mening raqamim 1;
|
9
o'n
|
num1 = () -> 12,3;
System.out.println("Qiymat "getValue());
|
+1-raqam.
|
o'n bir
|
|
|
12
|
num1 = () -> 2 + 3;
|
|
13
|
System.out.println("Qiymat "getValue());
|
+1-raqam.
|
o'n to'rt
|
|
|
o'n besh
16
|
raqam1 = () -> {
int hisoblagichi = 1;
|
|
17
|
int sum = 0;
|
|
o'n sakkiz
19
|
esa (qarshi<5)
{
|
|
yigirma
|
summa = summa + hisoblagich;
|
|
21
|
hisoblagich++;
|
|
22
|
}
|
|
23
|
|
|
sakkiz
24
|
|
qaytarish summasi;
|
|
25
|
|
};
|
26
|
|
System.out.println("Qiymat "getValue());
|
+1-raqam.
|
27
|
|
|
|
28
|
|
MyNumberPara raqami2;
|
|
29
|
|
|
|
o'ttiz
|
|
num2 = (n, m) -> n + m;
|
|
31
|
|
System.out.println("Qiymat "
|
+raqam2.
|
|
|
getValue2(2, 3));
|
|
32
|
|
|
|
33
|
|
son2 = (n, m) -> {
|
|
34
|
|
agar (n > 10)
|
|
35
|
|
m qaytarish;
|
|
36
|
|
boshqa
|
|
37
|
|
qaytish m+1;
|
|
38
|
|
};
|
|
39
|
|
System.out.println("Qiymat "
|
+raqam2.
|
40
|
|
getValue2(3, 9));
//System.out.println("Qiymat " num2.getValue2(3,
|
+
|
|
|
9.1));
|
|
41
|
}
|
|
|
42
|
|
|
|
43}
|
|
|
|
44
|
|
|
|
@Funktsional interfeys
interfeysi MyNumber{
double getValue();
48}
49
@Functional Interface
interfeysi MyNumberPara{
double getValue2(int n, int m); 53}
45–48 qatorlar MyNumber funktsional interfeysini e'lon qiladi . 50-53 qatorlar MyNumberPara funksiyasi uchun boshqa funktsional interfeysni e'lon qiladi.
5–41 qatorlarda main() usuli mavjud. main() usuli ichida MyNumber ga havola (num1) e'lon qilinadi 7 -satrda. 9-satrdagi lambda ifodasi keyin num1 ga
tayinlanadi.10 - satrda getValue() usuli num1.getValue() ifodasi bilan chaqiriladi . Keyin println() usuli
getValue () usuli bilan qaytarilgan qiymatni ko'rsatish uchun ishlatiladi .
12-26 qatorlar turli xil lambda iboralari va getValue() usuliga qo'ng'iroqlar misollarini o'z ichiga oladi . 28– 39 qatorlar ikkita int argumentli lambda ifodalariga misollardir . getValue2 () usuli ikkita int qiymati kiritilgan holda chaqiriladi .
Yuqoridagi dasturni ishga tushirish quyidagi natijani beradi:
Qiymati 12,3
Qiymati 5,0
Qiymat 10,0
Qiymati 5,0
Qiymat 10,0
40-qator buyruqni izohladi
System.out.println("Qiymat " getValue2(3, 9.1));
+raqam2.
Gap shundaki, biz ushbu buyruqda 3 va 9.1 qiymatlarini num2 uchun getValue2() usuliga o'tkazishga harakat qilmoqdamiz . Biroq , MyNumberPara - dagi getValue2() deklaratsiyasi getValue2 () ikkita int parametrini olishini bildiradi . Siz xatoga duch kelasiz, chunki 9.1 int turiga kirmaydi . Ushbu buyruq oldidan // ni olib tashlashga
harakat qilib ko'ring va dasturni qayta ishga tushiring. Bu safar xatolik yu
Machine Translated by Google
Machine Translated by Google
12
LOYIHA
Tabriklaymiz! Siz kitobning oxirgi bobiga keldingiz, unda biz birgalikda loyiha ustida ishlaymiz.
Ushbu bobda biz kitobda keltirilgan turli tushunchalarni ko'rsatadigan to'liq konsol ilovasini yozishda qo'limizni sinab ko'ramiz .
Tayyormisiz?
UMUMIY MA'LUMOT
Ushbu loyihada biz asosiy fitness markazi foydalanuvchi ma'lumotlarini boshqarish dasturi ustida ishlaymiz . Uning uchta filiali bor (Club Mercury, Club Neptun va Club Yupiter). Tashrifchilar, shuningdek, ikkita toifaga bo'linadi: bitta klub a'zolari (Yagona klub a'zosi) va bir nechta klublarga tashrif buyuruvchilar (Multi Club Members).
Bitta klubga tashrif buyuruvchiga faqat o'z klubiga kirishga ruxsat beriladi. Boshqa tomondan, uchta klub ham bir nechta klublarning mehmonlari uchun mavjud.
A'zolik to'lovi miqdori tashrif buyuruvchining bir yoki bir nechta klub xizmatlaridan foydalanishiga bog'liq. Bitta klubga tashrif buyuruvchilar uchun to'lov miqdori uning qaysi klubga kirishiga ham bog'liq.
A'zolar sinfi 223
Nihoyat, bir nechta klub a'zolari klubga qo'shilish uchun mukofot ballarini olishadi. Ro'yxatdan o'tgandan so'ng , ular esdalik sovg'alari va ichimliklar olish uchun ishlatilishi mumkin bo'lgan 100 ball oladi. Bizning dasturimiz olish jarayonini amalga oshirmaydi, faqat bir nechta klublar mehmoni hisobiga 100 ball yig'ish bilan cheklanadi .
Ilova har bir tashrifchi haqidagi ma'lumotlarni saqlash uchun CSV faylidan foydalanadi . Ilova har safar ishga tushirilganda, ma'lumotlar CSV faylidan o'qiladi va LinkedList-ga uzatiladi. LinkedList- ga tashrif buyuruvchini qo'shganda yoki olib tashlaganimizda, CSV fayli yangilanadi.
Keling, dasturni dasturlashga o'tamiz.
Ilova oltita sinf va bitta interfeysdan iborat.
Sinflar
A'zo
SingleClubMember a'zoni kengaytiradi
MultiClubMember a'zoni kengaytiradi
A'zolikni boshqarish FileHandler
Java loyihasi
Interfeys
kalkulyator
12.2. A'ZO SINIFI
Keling, a'zolar sinfidan boshlaylik . Ushbu sinf tashrif buyuruvchilar haqida asosiy ma'lumotlarni o'z ichiga oladi. U
boshqa ikkita sinf meros bo'ladigan ota-ona sinfi bo'lib xizmat qiladi .
224 12 -bob
NetBeans-ni ishga tushiring va nomli yangi loyiha yarating java loyihasi. Javaproject paketiga yangi sinf qo'shing va uni a'zo deb nomlang.
dalalar
Sinf to'rtta shaxsiy maydonni o'z ichiga oladi: memberType, memberID, nom va char, int, String va double turlari bilan to'lovlar
mos ravishda.
Bu maydonlarni o'zingiz e'lon qilib ko'ring.
Konstruktor
Keyinchalik, Member sinfi uchun konstruktor yaratamiz.
Sinfda to'rtta pMemberType parametrli bitta konstruktor mavjud
(char), pMemberID (int), pName (String) va pFees (ikki marta). Konstruktor ichida to'rtta parametr mos keladigan maydonlarga tayinlangan. Konstruktorni o'zingiz yozishga harakat qiling.
Usullari
Keling, to'rtta shaxsiy maydon uchun to'plam va olish
usullarini yarataylik. Barcha o'rnatish va olish usullari ommaviydir.
Har bir to'siq usuli mos keladigan parametrga ega va parametrni maydonga belgilaydi. Har bir get usuli maydon qiymatini qaytaradi. Misol:
public void setMemberType(char pMemberType)
{
MemberType = pMemberType;
}
A'zolar sinfi 225
umumiy belgi getMemberType()
{
a'zo turini qaytarish;
}
To'plamning qolgan qismini yozishga harakat qiling va usullarni o'zingiz oling
munosib.
Nihoyat, sinf uchun toString() usulini yozamiz. 8-bobda avval aytib o'tilganidek, Java-dagi barcha sinflar Ob'ektning asosiy sinfidan kelib chiqadi. toString() usuli Object sinfining oldindan yozilgan usuli bo'lib, ob'ektni ifodalovchi satrni qaytaradi . Biroq, toString() ning sukut bo'yicha amalga oshirilishi unchalik ma'lumotli emas.
Shu sababli, bu usul odatda olingan sinflarda bekor qilinadi (aslida, siz kutasiz).
Usul deklaratsiyasi quyidagicha ko'rinadi:
@Override
umumiy string toString(){
}
@Override izohini qo'shish tavsiya etiladi - bu bilan siz kompilyatorga usulni bekor qilayotganingizni bildirasiz.
Usul faqat bitta muammoni hal qiladi: u ma'lum bir tashrif buyuruvchi haqidagi ma'lumotga ega bo'lgan qatorni qaytaradi. Masalan,
usul qatorni qaytarishi mumkin:
"S, 1, Ivonne, 950.0"
bu erda S, 1, Yvonne va 950.0 mos ravishda berilgan dastur uchun MemberType, memberID, name va to'lovlar maydonlarining qiymatlari
Mehmon.
226 12-bob
Usulni o'zingiz yozishga harakat qiling.
Agar muammoga duch kelsangiz, quyidagi misolda birinchi ikkita maydon (memberType va memberID) bilan satrni qanday qaytarish kerakligi ko'rsatilgan :
a'zo turini + "," qaytaring +a'zo ID;
Ushbu buyruqni shunday o'zgartirishga harakat qiling
satrni barcha to'rtta maydon bilan aylantirdi.
Usul tugallangandan so'ng, a'zolar sinfi tayyor bo'ladi.
Quyida a'zolar sinfining qisqacha tavsifi keltirilgan.
dalalar
xususiy char MemberType; private int memberID; shaxsiy string nomi; xususiy ikki tomonlama to'lovlar;
Konstruktor
A'zo(char pMemberType, int pMemberID, String pName, double pFees)
Usullari
public void setMemberType(char pMemberType) public void setMemberID(int pMemberID) public void setName(String pName) public void setFees(double pFees)
public char getMemberType() public int getMemberID() public String getName()
Sinf SingleClubMember 227
ommaviy double getFees()
umumiy string toString()
BIR KLUBA A'ZOLI SINFI
Keyingi bosqichda a'zodan olingan sinf dasturlashtiriladi. Loyihaga javaproject qo'shing SingleClubMember nomli yangi sinf .
Avval siz ushbu sinfning kengaytirilishini belgilashingiz kerak
Sinf deklaratsiyasi quyidagi bilan almashtirilgan a'zo :
umumiy sinf SingleClubMember a'zoni kengaytiradi{
}
dalalar
SingleClubMember sinfida club nomli bitta shaxsiy ichki maydon mavjud . Ushbu maydonni e'lon qilishga harakat qiling
o'z-o'zidan.
Konstruktor
Keling, SingleClubMember sinfining konstruktoriga o'tamiz. Sinf besh parametrli bitta konstruktorga ega: pMemberType (char), pMemberID (int), pName (String), pFees
(juft) va pClub (int). Konstruktor ichida super kalit so'zi birinchi navbatda ota-klassdagi konstruktorni chaqirish uchun ishlatiladi . Ota-konstruktorga pMemberType , pMemberID, pName uzatiladi
va pfees. pClub parametri keyin klub maydoniga tayinlanadi.
Konstruktorni o'zingiz yozishga harakat qiling.
228 12 -bob
Usullari
Keling, klub maydoni uchun olish va sozlash usullarini qo'shamiz . Belgilangan usul mos keladigan parametrga ega va parametrni maydonga belgilaydi. Get usuli maydon qiymatini qaytaradi.
Ikkala usul ham ochiq deb e'lon qilinadi. Yozish usullarini sinab ko'ring
o'z-o'zidan.
Nihoyat, ushbu sinf uchun toString() usulini dasturlashtiramiz. Ushbu usul ommaviy deb e'lon qilingan.
Bu ota-ona sinfining toString() usuliga o'xshaydi , lekin u
qo'shimcha ma'lumotni chop etadi - tashrif buyuruvchi boradigan klub
Masalan, usul quyidagi ma'lumotlarga ega qatorni qaytaradi:
"S, 1, Ivonne, 950.0, 2"
Bu erda S, 1, Yvonne, 950.0 va 2 mos ravishda MemberType, memberID, ism, to'lovlar va klub maydonlarining qiymatlari .
String yaratishga yordam berish uchun biz ota- klassning toString() usulidan foydalanishimiz mumkin .
olingan sinfda.
Ota-klassdagi usuldan foydalanish uchun, xuddi ota-sinf konstruktoriga qo'ng'iroq qilganingizdek , super kalit so'zidan foydalaning. Ota-klassdagi toString() usulini chaqirish quyidagi buyruq bilan amalga oshiriladi:
super.t oString()
Sizga shuni eslatib o'taman, bu usul satrni qaytaradi. Ushbu qator qo'shimcha ma'lumotni ko'rsatish uchun boshqa pastki qatorlar bilan birlashtirilishi mumkin .
MultiClubMember sinf 229
Ushbu usulni o'zingiz yozishga harakat qiling.
Usul ustida ishlash tugagandan so'ng, SingleMember
klassi tayyor bo'ladi. Uning qisqacha tavsifi quyida keltirilgan.
dalalar
xususiy klub
Konstruktor
SingleClubMember(char pMemberType, int pMemberID, String pName, double pFees, int pClub)
Usullari
public void setClub(int pClub) public int getClub()
umumiy string toString()
SINF KO'P KLAMBAR
SingleClubMember sinfiga qo'shimcha ravishda biz asosiy Member sinfidan kelib chiqadigan boshqa sinfni ham yaratamiz . nomli javaproektga yangi sinf qo'shing MultiClubmember. extends kalit so'zi berilgan sinf
sinfni kengaytirayotganini ko'rsatish uchun ishlatiladi
a'zosi.
dalalar
MultiClubMember klassi bir maydonni o'z ichiga oladi, bu MemberPoints nomli shaxsiy int maydoni . Bu maydonni o'zingiz e'lon qilib ko'ring .
230 12 -bob
Konstruktorlar
Keyingi qadam MultiClubMember sinfining konstruktorini dasturlashdir. Bu konstruktor SingleClubMember konstruktoriga juda o'xshaydi .
Bundan tashqari, 5 ta parametrni oladi . Asosiy farq shundaki, oxirgi konstruktor parametri pMembershipPoints
(int) pClub o'rniga . Konstruktor ichida super kalit so'zi ota- konstruktorni chaqirish uchun ishlatiladi . Bundan tashqari, pMembershipPoints qiymati
aÿzolik ballari maydoniga tayinlanadi .
Usullari
Keyin a'zolik nuqtalari maydoni uchun olish va sozlash usullarini dasturlaymiz . Bundan tashqari, ro'dagi toString() usulini bekor qilib, toString() usuli qo'shiladi .
bolalar sinfi.
Usul quyidagi ma'lumotlarni chiqaradi:
"M, 2, Erik, 1320.0, 100"
bu erda M, 2, Erik, 1320.0 va 100 mos ravishda MemberType,
MemberID , ism , to'lovlar va MembershipPoints maydonlarining qiymatlari .
Ushbu usullarni o'zingiz yozishga harakat qiling. Barcha usullar ochiq deb e'lon qilinadi.
Usullar ustida ishlashni tugatgandan so'ng MultiMember sinfi tayyor bo'ladi. Uning qisqacha tavsifi quyida keltirilgan.
dalalar
xususiy int a'zolik nuqtalari
Interfeys kalkulyatori 231
Konstruktor
MultiClubMember(char pMemberType, int pMemberID, String pName, double pFees, int pMembershipPoints)
Usullari
umumiy bekor to'plamiMembershipPoints(int pMembershipPoints)
public int getMembershipPoints() umumiy string toString()
KALKULYATOR INTERFESI
Member klassi va undan olingan sinflar tugallangandan so'ng, keling , loyihada qo'llaniladigan funktsional interfeys kodiga o'tamiz. Ushbu interfeys umumiydir.
Agar siz hali Java generiklari va funksional interfeyslari bilan tanish bo'lmasangiz , 11-bobni qayta o'qib chiqishingizni tavsiya qilaman.
Kalkulyator nomli javaproject paketida yangi Java interfeysini yarating . Buning uchun Project Explorer
-da paket nomini o'ng tugmasini bosing va NewÿJava Interface -ni tanlang .
Interfeys faqat raqamli ma'lumotlar turlari bilan ishlaydi . Natijada, u cheklangan turdagi parametrni
olishi kerak. Interfeysning o'zini e'lon qilishga harakat qiling
munosib.
Cheklangan turdagi parametr nima ekanligini unutgan bo'lsangiz, 11.1.1 -bo'limdagi "Cheklangan turlar" bo'limiga
qarang . Ushbu kichik bo'limdagi misol qanday e'lon qilishni ko'rsatadi
232 12 -bob
umumlashtirilgan sinfni burish uchun. Umumiy interfeysni e'lon qilish sintaksisi o'xshash, faqat class kalit so'zi o'rniga interfeys kalit so'zi ishlatiladi .
Interfeysni e'lon qilgandan so'ng, biz unga usul qo'shamiz . Kalkulyator interfeysi funktsionaldir va shuning uchun faqat bitta mavhum usulni o'z ichiga oladi, accountFees (). Bu usul bir clubID parametrini oladi va ikki barobar qiymatni qaytaradi. Ushbu usulni o'zingiz e'lon qilishga harakat qiling. Usul bilan bir
qatorda interfeys ham tayyor bo'ladi. Uning qisqacha tavsifi
pastga tushadi.
Usul
ikki marta hisoblash to'lovlari (T clubID)
FILEHANDLER SINFI
Hamma narsa FileHandler sinfida ishlashga tayyor . nomli javaproject paketiga yangi sinf qo'shing
FileHandler.
Sinfda uchta umumiy usul mavjud - readFile(), appendFile() va overWriteFile().
Sinf quyidagi ikkitasini import qilishi kerak
paket:
import java.util.LinkedList; import java.io.*;
Ularni o'zingiz import qilib ko'ring.
12.6. FileHandler sinf 233
Usullari readFile()
ReadFile() usulini dasturlashdan boshlaylik. Ushbu umumiy usul
hech qanday parametrni olmaydi va LinkedList Ro'yxatdan ob'ektlar to'plamini qaytaradi. Ushbu usulni o'zingiz e'lon qilishga
harakat qiling. Agar sizga yordam kerak bo'lsa, 9.6-bo'limga qarang.
readFile () usuli barcha tashrif buyuruvchilar haqida batafsil ma'lumotga ega CSV faylidan ma'lumotlarni o'qiydi . Keyin har bir tashrifchi LinkedList to'plamiga qo'shiladi. Usul LinkedList ni qaytaradi . CSV faylidagi ma'lumotlar quyidagi formatga ega:
Do'stlaringiz bilan baham: |