Sobes.tech
Middle

Որ դեպքերում պետք է օգտագործել աբստրակտ դաս և որ դեպքերում ինտերֆեյս?

sobes.tech AI

Պատասխան AI-ից

Աբստրակտ դաս:

  • Երբ անհրաժեշտ է ընդհանուր գործառույթի իրականացում ենթակլասների համար, բայց անհրաժեշտ է որոշ մեթոդների վերագրումներում ճկունություն:
  • Երբ դասերը ունեն ընդհանուր վիճակի դաշտեր (միավոր փոփոխականներ), որոնք պետք է ժառանգվեն:
  • Երբ հնարավոր է սահմանել "հարաբերություն" դասերի միջև ("այսը մի է" կամ "is-a"):
  • Երբ անհրաժեշտ է տրամադրել հիմնական մեթոդների նախնական իրականացում, իսկ ենթակլասները պետք է միայն իրենց հատուկ մեթոդները իրականացնել:

Ինտերֆեյս:

  • Երբ անհրաժեշտ է սահմանել վարքագծի պայմանագիր, որը կարող են իրականացնել ոչ կապված դասերը:
  • Երբ դասը պետք է ունենա մի քանի տիպեր (բազմակի ժառանգություն տիպերի):
  • Երբ կարևոր է ճկունությունը և հնարավորությունը ավելացնել նոր վարքագիծ առանց գոյություն ունեցող դասերի փոփոխության (նոր ինտերֆեյսի իրականացման միջոցով):
  • Երբ պահանջվում է խիստ բաժանում վարքագծի սահմանման և նրա իրականացման միջև:
  • Երբ անհրաժեշտ է մոդելավորել "կարող է լինել", "has-a" հարաբերությունը (համենայն դեպս, կոմպոզիցիան հաճախ նախընտրելի է "has-a" համար):

Օրինակ:

Աբստրակտ Animal դասը կարող է ունենալ ընդհանուր դաշտեր տարի, անուն և իրագործված eat() մեթոդը, բայց նաև պետք է ունենալ աբստրակտ makeSound() մեթոդը, որը պետք է իրականացնել Dog և Cat ենթակլասներում:

Flyable ինտերֆեյսը կարող է իրականացնել Bird և Airplane դասերը, որոնք այլ կերպ չեն կապված և չեն ժառանգում ընդհանուր նախնուց, բայց երկուսն էլ կարող են "թռչել"։