Кіріспе

Бағдарламалау тілінің ерекшелігі

Бағдарламалау тілдерінде абстрактіл тип (сонымен қатар экзистенциалдық типтер деп те аталады) – номинативтік типтер жүйесінде тікелей инстанцияланбайтын тип; керісінше, нақты типті тікелей инстанциялауға болады. Абстрактіл типті инстанциялау тек нақты субтип арқылы ғана мүмкін. Абстрактіл типтің іске асырылуы жоқ немесе толық емес болуы мүмкін. Кейбір тілдерде іске асырылмаған (толық емес емес) абстрактіл типтер протоколдар, интерфейстер, қолтаңбалар немесе сынып типтері деп аталады. Сыныпқа негізделген объектіге бағытталған бағдарламалауда абстрактіл типтер абстрактіл кластар (сонымен қатар абстрактіл базалық кластар деп те аталады) түрінде, ал нақты типтер нақты кластар түрінде іске асырылады. Жалпылама бағдарламалауда осыған ұқсас ұғым – концепт, ол синтаксис пен семантиканы ұқсас анықтайды, бірақ субтип қатынасын қажет етпейді: екі байланыссыз тип бір концептті қанағаттандыруы мүмкін. Көбінесе абстрактіл типтердің бір немесе бірнеше іске асырылуы жеке беріледі, мысалы, инстанциялана алатын нақты субтиптер түрінде. Объектіге бағытталған бағдарламалауда абстрактіл сыныпта оның кіші сыныптарымен ортақ абстрактіл әдістер немесе абстрактіл қасиеттер болуы мүмкін. Абстрактіл типтерді іске асыру үшін қолданылатын (немесе қолданылуы мүмкін) тіл ерекшеліктерінің басқа атауларына қасиеттер, араластырулар, дәмдер, рөлдер немесе типтер кластары жатады. Абстрактіл типтер сондай-ақ кез келген санда абстрактіл емес әдістер мен қасиеттерді қамтуы мүмкін, мысалы, шаблон әдісі үлгісін іске асыру кезінде, ол нақты кіші сыныптарда бейімделген логиканы қамтамасыз ету үшін өзгермейтін әдістер мен бекітілген іске асырулар мен ілмек әдістердің қоспасын қолданады.

Қолданылуы

Абстрактілік типтер – статикалық типтелген бағдарламалау тілдеріндегі маңызды мүмкіндік. Көптеген динамикалық типтелген тілдерде оған баламалы мүмкіндік жоқ (әйтсе де, қаз типтеуін қолдану абстрактілік типтерді қажетсіз етеді), бірақ кейбір заманауи динамикалық типтелген тілдерде трайттар кездеседі. Кейбір авторлар сыныптар жапырақ сыныптар болуы керек (қосалқы типтері болмауы керек), немесе абстрактілі болуы керек деп санайды. Абстрактілік типтердің пайдасы – оларды протоколды анықтау және күшіне енгізу үшін қолдануға болады; протоколды іске асыратын барлық нысандар қолдауы тиіс операциялар жиынтығы. Абстрактілік типтер сондай-ақ Үлгі әдісі үлгісінің (Template Method Pattern) маңызды бөлігі болып табылады.