Java бағдарламалау/Бастау
Жүйелерді түсіну
[өңдеу]Біз өзімізді қоршаған әлемді жүйелер тұрғысынан тұжырымдаймыз. Жүйе - бұл тандемде бірге жұмыс істейтін өзара байланысты объектілердің торы. Жүйе теориясында жүйе қоршаған ортамен қоршалған әлемде біртұтас нысан ретінде белгіленеді. Жүйе екі түрлі түрдегі хабарламаларды пайдалана отырып, оны қоршаған ортамен әрекеттеседі:
кірістер: қоршаған ортадан алынған хабарламалар; және, шығыстар: қоршаған ортаға қайтарылған хабарламалар.

Өмір - бұл сигналдар мен хабарламаларды жіберетін өзара байланысты объектілердің күрделі бейберекеттігі. Бір компания үшін экономикалық экосфераның күрделі жүйесін көрсететін 2-суреттегі төмендегі суретті қараңыз. Егер сіз тағы бірнеше компания мен олардың ішкі жүйелерін қоссаңыз, бұл жүйе диаграммасы қандай болатынын елестетіп көріңіз. Жалпы компьютерлік бағдарламалық қамтамасыз ету жүйелері өзара байланысты әрі қарайғы ішкі жүйелердің күрделі торы болып табылады – мұнда әрбір ішкі жүйе келесі ішкі жүйелерге бөлінуі немесе бөлінбеуі мүмкін. Әрбір ішкі жүйе кері байланыс хабарламаларын, яғни кірістер мен шығыстарды пайдаланып басқалармен байланысады.
Абстракция процесі
[өңдеу]Бағдарламалау шын мәнінде жүйе ретінде нақты өмірдегі мәселелердің шешімдерін ойлау болып табылады. Кез келген бағдарламалау тілінде сіз нақты өмірлік мәселелерді компьютерлік жүйеде дәл көрсетуге болатын нәрсеге қалай шешу керектігін білуіңіз керек. Java бағдарламалау тілімен (немесе шын мәнінде кез келген бағдарламалау тілімен) бағдарламалауды бастау үшін бағдарламашы алдымен абстракцияның негіздерін түсінуі керек.
Абстракция - бұл сіздің бағдарламаларыңызда нақты өмірлік мәселелер мен объектілерді көрсету процесі.
Романшыға, суретшіге және бағдарламашыға өз жұмысында нақты өмір объектісін абстракциялау (яғни бейнелеу) сұралды делік. Абстракциялауды қажет ететін нақты өмір объектісі жануар болсын делік. Жазушы үшін абстракция жануардың суретін салуды, ал суретші жануардың суретін салуды қамтиды, бірақ компьютерлік бағдарламашы ше?
Java бағдарламалау тілінде бағдарламалаушының нақты не істеу керектігін көрсететін объектіге бағытталған бағдарламалау (OOP) деп аталатын бағдарламалау парадигмасы қолданылады. OOP сәйкес, нақты өмірдегі әрбір нысан немесе мәселе компьютерлік жүйеңізде виртуалды нысанға аударылуы мүмкін.
Объектілерде ойлау
[өңдеу]OOP-де нақты өмірлік нысанның әрбір абстракциясы жай ғана кодыңыздағы нысан деп аталады. Нысан - бұл компьютерлік жүйенің бөлігі ретінде шын өмірдегі объектінің ең негізгі көрінісі. Java нысанға бағытталған тіл болғандықтан, Java ішіндегі барлық нәрсе объект ретінде көрсетіледі. Бұл әсерді көрсету үшін, егер сіз кодыңызда жануардың абстракциясын анықтағыңыз келсе, келесі код жолдарын жазасыз (кез келген басқа абстракция үшін сияқты):
Жоғарыдағы код сіздің кодыңызда нысанды анықтауды бастауға болатын бос орынды жасайды; бұл кеңістік класс (немесе тип) анықтамасы деп аталады. Барлық нысандарды бағдарламаңызда пайдалану үшін класс анықтамасы арқылы анықтау керек. Бұйра жақшаларға назар аударыңыз – осы жақшалар ішінде жазған кез келген нәрсе сіздің нысаныңыздың анықтамасы немесе сипаттамасы ретінде қызмет етеді. Жоғарыда келтірілген мысалда біз нақты өмірдегі кез келген жануардың дерексіз көрінісі ретінде қызмет ете алатын нысандар үшін Animal деп аталатын класс анықтамасын жасадық. Java ортасы бұл кодты сынып анықтамасы ретінде бағалайтын әдіс - біз класс анықтамасын (яғни, сынып) бастау үшін пайдаланған префикс сөзді қарау. Java тіліндегі мұндай алдын ала анықталған сөздер кілт сөздер ретінде белгілі және тілдің грамматикасын құрайды (бағдарламалау синтаксисі деп аталады).
Класс анықтамалары мен түрлерін түсіну
[өңдеу]Объектілердің абстрактілі түрлері немесе типологиясы туралы ойлаған бірінші адам Аристотель болуы мүмкін. Ол оларды кластар деп атай бастады - мысалы, құстар класы, сүтқоректілер класы. Сондықтан сынып анықтамалары сіз жасайтын нысандардың жалпы сипаттамаларын немесе түрлерін анықтау мақсатына жақсы қызмет етеді. Класс анықтамасын жариялағаннан кейін, сіз осы анықтамаға негізделген нысандар жасай аласыз. Мұны істеу үшін сізге келесідей арнайы синтаксис жазу керек:
Жоғарыдағы код Animal класс анықтамасына негізделген ит деп аталатын нысанды тиімді жасайды. Бағдарламашы емес тілмен айтқанда, жоғарыдағы код «Жаңа жануар түріндегі ит нысанын жасаңыз» дегенге ұқсас нәрсеге аударылады. Бір класс анықтамасы төмендегі код көрсеткендей бірнеше нысандарды жасауға мүмкіндік береді:
Негізінде, класс немесе тип анықтамасының кодын бір рет жазу керек, содан кейін оны осы спецификацияға негізделген нысандардың сансыз санын жасау үшін пайдаланыңыз. Сіз мұны істеудің маңыздылығын түсінбеуіңіз мүмкін, бірақ бұл шағын жаттығу сізге көп уақытты үнемдейді (Java-ға дейінгі күндерде бағдарламашыларға оңай қол жетімді емес сән-салтанат).
Сынып анықтамаларын кеңейту
[өңдеу]Класс анықтамасынан жасалған әрбір нысан негізінен бірдей болса да, кодыңызда сол нысандарды саралау тәсілі болуы керек. Нысан өрістері (немесе жай өрістер) сіздің нысандарыңызды басқа нысандардан ерекше ететін нәрсе. Мысалы, қазіргі абстракциямызды алайық. Жануар ит, мысық, түйе немесе үйрек болуы мүмкін, бірақ бұл абстракция өте жалпы сипатта болғандықтан, осы жануарлардың барлығына ортақ, бірақ жануарларды бір-бірінен ажырататын өрістерді анықтау керек. Мысалы, сізде екі өріс болуы мүмкін: аты (осы жануарлардың кез келгеніне берілген жалпы атау) және аяқтары (осы жануарлардың кез келгенінің жүруі қажет болатын мүшелердің саны). Нысандарды анықтай бастағанда, олар келесідей бола бастайды:
Компьютер коды сынып жануар {
Жол атауы; ішкі аяқтар;
}
Жоғарыдағы кодта сіз екі нысан өрісін анықтадыңыз:
String түрінің атауы деп аталатын өріс; және, int типті аяқтар деп аталатын өріс. Бұл арнайы алдын ала анықталған типтер деректер типтері деп аталады. Жол деректер түрі атаулар сияқты мәтіндік мәндерді сақтай алатын өрістер үшін пайдаланылады, ал int (бүтін) деректер түрі сандық мәндерді сақтай алатын өрістер үшін пайдаланылады.
Ескерту: Өрістер әртүрлі тілдерде әртүрлі заттар деп аталады. Оларды басқа бағдарламалау тілінің синтаксисіндегі күй идентификаторлары, қасиеттер немесе мүше айнымалылар деп атауға болады. Java әр түрлі контексттерде өрістер мен сипаттар сөздерін пайдаланады, мұны алдағы бөлімдерден түсінуге болады.
3-сурет: Animal нысанын Java ортасындағы жүйе ретінде белгілеу үшін, сіз оны осылай ұсынасыз. Өрістердің қалай ұсынылғанына назар аударыңыз.
Өрістердің қалай жұмыс істейтінін көрсету үшін біз келесідей сынып анықтамасының осы өзгертілген нұсқасынан нысандарды жасаймыз:
Компьютер коды Жануар жануар1 = жаңа жануар(); Жануар жануар2 = жаңа жануар();
animal1.name = "ит"; жануар1.аяғы = 4;
animal2.name = "үйрек"; жануар2.аяғы = 2;
Қолдану арқылы жасалған нысандардың өрістеріне қол жеткізуге болады. (нүкте) немесе мүшелік операторы. Жоғарыдағы мысалда біз екі нысанды жасадық: Animal1 және Animal2 түріндегі Animal. Әр Жануардың екі өрісі бар екенін анықтағандықтан, аты мен аяғы бар, біз екеуін бір-бірінен ажырату үшін мүшелік операторды пайдаланып әрбір нысан үшін осы өрістерге қол жеткіздік және өзгерттік. Әртүрлі нысандар үшін әртүрлі мәндерді жариялау арқылы біз олардың ағымдағы күйін басқара аламыз. Мәселен, мысалы:
жануар1 нысаны жүруге болатын 4 аяқты «ит»; әзірше, жануар2 нысаны - жүруге болатын 2 аяғы бар «үйрек». Екі нысанды бір-бірінен ажырататын нәрсе - олардың қазіргі күйі. Екі нысанның да күйлері әртүрлі, сондықтан олар бір үлгіден немесе сынып анықтамасынан жасалғанына қарамастан, екі түрлі нысан ретінде ерекшеленеді.
Нысандарға мінез-құлық қосу
[өңдеу]Осы кезде сіздің нысандарыңыз өрістер тобын жариялаудан басқа ештеңе жасамайды. Жүйе бола отырып, сіздің нысандарыңыз қоршаған ортамен және басқа жүйелермен де өзара әрекеттесу мүмкіндігіне ие болуы керек. Өзара әрекеттесу үшін осы мүмкіндікті қосу үшін объект сыныбының анықтамаларына интерактивті әрекетті де қосу керек. Мұндай мінез-құлық әдіс деп аталатын бағдарламалау құрылымы арқылы сынып анықтамаларына қосылады.
Жануар жағдайында сіз оның қоршаған ортасы арқылы қозғала алу үшін жануардың виртуалды бейнесін талап етесіз. Айталық, аналогия ретінде сіз жануардың өз ортасында жүре алатынын қалайсыз. Осылайша, біздің нысанға жаяу деп аталатын әдісті қосу керек. Ол үшін келесі кодты жазуымыз керек:
Компьютер коды сынып жануар {
Жол атауы; ішкі аяқтар;
void walk() {}
}
Бұл кодты жазған кезде бір нәрсе бірден көрінеді. Класс сипаттамасы сияқты әдісте де бұйра жақшалар бар. Әдетте, бұйра жақшалар нысан ішіндегі аумақты (немесе аумақты) анықтау үшін пайдаланылады. Осылайша, бұйра жақшалардың бірінші жинағы сынып деңгейіндегі ауқым деп аталатын сынып анықтамасының ауқымын анықтады. Бұл жаңа бұйра жақшалар жинағы әдіспен бірге әдіс деңгейінің ауқымы деп аталатын әдісіңізді одан әрі анықтау ауқымын анықтайды.
Бұл жағдайда біздің әдісіміздің атауы - жүру. Дегенмен, біздің әдісіміздің атауында дөңгелек жақшалар да бар екеніне назар аударыңыз. Бұл дөңгелек жақшалар әдістерге арналған көрнекі идентификаторлар болумен шектелмей, біздің әдістерді аргументтер деп аталатын қосымша кіріс ақпаратымен қамтамасыз ету үшін қолданылады.
Демек, әдіс нысанға келесі әрекеттерді орындауға мүмкіндік береді:
Енгізуді қабылдау: Кейбір аргументтерді алу; Процесс туралы ақпарат: алынған аргумент(дер) бойынша оның бұйра жақшаларында жұмыс істеу; және, Шығаруды жасаңыз: кейде бір нәрсені қайтарыңыз. Негізінде, әдістер - бұл нысанды жүйе сияқты әрекет ететін нәрсе.
Әдіс атауының алдында void кілт сөзіне назар аударыңыз - бұл әдіс жүру ештеңені қайтармайтынын көрсетеді. Кез келген деректер түрін қайтару әдісін орнатуға болады – ол String немесе int болуы мүмкін.
Инкапсуляция процесі
[өңдеу]Қазіргі уақытта біз кез келген нысанның қоршаған ортамен әрекеттесе алатынын және өз кезегінде оның әсеріне ұшырайтынын жақсы түсінеміз. Біздің мысалда Animal нысаны белгілі бір өрістерді – атау мен аяқтарды және нысанды басқару үшін ортада қолданылатын walk() әдісін көрсетті. Бұл әсер ету формасы жасырын болып табылады. Java бағдарламалау тілін пайдалана отырып, бағдарламашы басқа объектілерге және қоршаған ортаның белгілі бір объектіге қол жеткізу деңгейін анықтау мүмкіндігіне ие.
Қатынас модификаторларын пайдалану
[өңдеу]Объектілерді, олардың өрістері мен әдістерін жариялау және анықтаумен қатар, бағдарламашыда сол элементтерге қол жеткізу деңгейлерін анықтау мүмкіндігі де бар. Бұл қатынас модификаторлары ретінде белгілі кілт сөздерді пайдалану арқылы жасалады.
Осы әсерді көрсету үшін мысалды өзгертейік:
Компьютер коды сынып жануар {
жалпы жол атауы; қоғамдық ішкі аяқтар;
public void walk() {}
}
Барлық өрістер мен әдістерді жалпыға ортақ деп жариялау арқылы біз оларды Animal класының ауқымынан тыс пайдалануға болатынына көз жеткіздік. Бұл кез келген басқа нысанның (жануардан басқа) осы мүше элементтеріне қатынасы бар екенін білдіреді. Дегенмен, сыныптың белгілі бір мүше элементтеріне кіруді шектеу үшін біз әрқашан жеке қатынас модификаторын пайдалана аламыз (төменде көрсетілгендей).
Компьютер коды сынып жануар {
жеке жол атауы; жеке ішкі аяқтар;
public void walk() {}
}
Бұл мысалда өрістердің атауы мен аяқтарына Animal класының ауқымында ғана қол жеткізуге болады. Осы сыныптың аумағынан тыс ешбір нысан осы екі өріске қол жеткізе алмайды. Дегенмен, walk() әдісі әлі де жалпыға қолжетімді болғандықтан, оны осы сыныптың шеңберінен тыс актерлер мен нысандар басқара алады. Қатынас модификаторлары тек өрістермен немесе әдістермен шектелмейді, оларды сынып анықтамалары үшін де пайдалануға болады (төменде көрсетілгендей).
Компьютер коды қоғамдық сынып Жануар {
жеке жол атауы; жеке ішкі аяқтар;
public void walk() {}
}
Келесі кілт сөздер тізімі Java бағдарламасымен пайдалануға болатын жарамды рұқсат модификаторларын көрсетеді:
кілт сөздің сипаттамасы public Класс шеңберінен тыс пайдаланылатын белгілі бір өріске немесе әдіске қатынасты ашады. private Белгілі бір өріске немесе әдіске кіруді шектейді, тек сынып ауқымында қолданылады. қорғалған Белгілі бір өріске немесе әдістерге кіру ағымдағы сыныпты иеленетін сыныптар үшін сақталған. Бұл туралы толығырақ мұра туралы бөлімде талқыланатын болады.