Դասեր ընդդեմ կառուցվածքների
Օբյեկտ կողմնորոշված (OO) ծրագրավորման լեզուների որոշ հիմնական հասկացություններն են encapsulation, inheritance և polymorphism: Դասը և կառուցվածքը OO կառուցվածքներից/գործիքներից երկուսն են, որոնք օգնում են ծրագրավորողներին հասնել այս հասկացություններին դուրս եկող OO ծրագրավորման լեզուների մեծ մասում (Java-ն չի տրամադրում կառուցվածքներ): Դասերը իրական աշխարհի օբյեկտների վերացական ներկայացում են: Կառուցվածքները շատ նման են նմանատիպ կիրառություն ունեցող դասերին, բայց դասերի համեմատ քիչ սահմանափակումներ ունեն: Երկու դասերը և կառուցվածքը օգտագործվում են նմանատիպ տիպի տվյալներ միասին խմբավորելու համար:
Ի՞նչ են դասերը:
Դասերը պատկերում են իրական աշխարհի օբյեկտների վերացական ներկայացումը, մինչդեռ հարաբերությունները պատկերում են, թե ինչպես է յուրաքանչյուր դաս կապված մյուսների հետ: Ե՛վ դասերը, և՛ հարաբերությունները ունեն հատկություններ, որոնք կոչվում են ատրիբուտներ: Դասերի մեթոդները ներկայացնում կամ սահմանում են այս դասերի վարքագիծը: Դասերի մեթոդները և ատրիբուտները կոչվում են դասի անդամներ: Սովորաբար, ինկապսուլյացիան ձեռք է բերվում ատրիբուտները մասնավոր դարձնելով, միաժամանակ ստեղծելով հանրային մեթոդներ, որոնք կարող են օգտագործվել այդ ատրիբուտները մուտք գործելու համար: Օբյեկտը դասի օրինակն է: Ժառանգությունը թույլ է տալիս օգտվողին ընդլայնել դասերը (կոչվում են ենթադասեր) այլ դասերից (կոչվում են սուպեր դասեր): Պոլիմորֆիզմը թույլ է տալիս ծրագրավորողին փոխարինել դասի առարկան իր սուպեր դասի օբյեկտի փոխարեն: Որպես կանոն, խնդրի սահմանման մեջ հայտնաբերված գոյականներն ուղղակիորեն դառնում են դասեր ծրագրում: Եվ նմանապես, բայերը դառնում են մեթոդներ: Հանրային, մասնավոր և պաշտպանված մուտքի տիպիկ փոփոխիչներն են, որոնք օգտագործվում են դասերի համար: Դասի դիագրամը ցույց է տալիս համակարգերի դասերը, դասերի միջև հարաբերությունները և դրանց ատրիբուտները:
Ի՞նչ են կառուցվածքները:
Ինչպես նշվեց վերևում, կառուցվածքները շատ նման են նմանատիպ կիրառման դասերին, բայց մի փոքր սահմանափակ հնարավորություններ ունեն, քան դասերը: Իրականում դասերը կարելի է դիտարկել որպես կառույցների ընդլայնում։ Օրինակ, կառույցները նույնն են, ինչ դասերը C++-ում, բայց դրանք լռելյայն ունեն հանրային անդամներ: Կառուցվածքը կարող է սահմանվել օգտագործողի կողմից՝ կոմպոզիտային տեսակը ներկայացնելու համար: Դասերի նման, կառուցվածքները պարունակում են անդամներ, որոնք կարող են պատկանել բազմաթիվ տեսակների: struct հիմնաբառը օգտագործվում է C-ում և C++-ում կառուցվածք սահմանելու համար, մինչդեռ Structure հիմնաբառը նույնի համար օգտագործվում է. NET ծրագրավորման լեզուներում:
Ո՞րն է տարբերությունը դասերի և կառուցվածքների միջև:
Թեև դասերը և կառուցվածքները ծրագրավորման լեզուներում հայտնաբերված նմանատիպ կառուցվածքներ են, դրանք ունեն նուրբ տարբերություններ: Որպես կանոն, դասը կառուցվածքի ընդլայնումն է, և, հետևաբար, կառույցներն ունեն որոշ հարաբերական սահմանափակումներ: Օրինակ, կառուցվածքները կարելի է համարել նույնը, ինչ դասերը C++-ում, սակայն անդամները դասերում լռելյայնորեն հրապարակային չեն (ի տարբերություն կառուցվածքների)։Սա իրականում նշանակում է, որ դուք կարող եք սահմանել դաս և կառուցվածք՝ ճիշտ նույն բնութագրերով, օգտագործելով համապատասխան մուտքի փոփոխիչներ C++-ում: Այնուամենայնիվ, C-ում կառուցվածքները չեն կարող պարունակել որևէ գործառույթ կամ գերբեռնված գործողություններ: class և struct հիմնաբառերն օգտագործվում են համապատասխանաբար C++-ում դաս և կառուցվածք սահմանելու համար: Երբ խոսքը վերաբերում է. NET լեզուներին (C, VB. NET և այլն), դասը հղման տեսակ է, մինչդեռ կառուցվածքը արժեքի տեսակ է: Եվ սովորաբար, կառուցվածքներն օգտագործվում են ավելի փոքր օբյեկտների համար, բայց դասերը օգտագործվում են ավելի մեծ օբյեկտների համար, որոնք պահվում են հիշողության մեջ ավելի երկար ժամանակահատվածներով: