Қызмет көрсету орталықтарының сараптамасын жасайтын қосымша құрылғының сипаттамасы



бет11/14
Дата23.05.2020
өлшемі1,79 Mb.
#70653
түріПрограмма
1   ...   6   7   8   9   10   11   12   13   14
Буферленген ағындар. Буферленген ағындар сүзгіленетін ағындар кластарының кеңейтілімі болып табылады, оларға енгізу-шығару ағындарына жадыда буфер қосылады. Бұл буфер екі негізгі функцияны атқарады:

  • java атқарушы ортасына бір реттен енгізу-шығару операцияларын бірден артық байтпен жасауға мүмкіндік береді, осы арқылы орта өнімділігін арттырады.

  • Ағынның буфері бар болғандықтан, ағында деректерді өткізу, белгілерді орнату және буферді тазарту сияқты операциялар мүмкін болады.

BufferedInputStream. Енгізу-шығарудың буферленуі – осындай операцияларды ыңғайластырудың жалпы қабылданған тәсілі. Java-дағы BufferedlnputStream класы InputStream-ның кез келген объектісін буферленген ағынмен «айналдырып алуға», және, осы арқылы өнімділікте ұтысқа ие болуға мүмкіндік береді. Бұл кластың екі конструкторы бар. Оның біріншісі BufferedInputStream(InputStream in) ұзындығы 32 байт болатын буферленген ағын құрады. Екіншісінде BufferedInputStream(InputStream in, int size) құрылатын ағын үшін буфер өлшемі конструктордың екінші параметрімен беріледі. Жалпы жағдайда буфердің тиімді өлшемі операциялық жүйеге, қолжетімді жедел жады санына және компьютер конфигурациясына тәуелді.

BufferedOutputStream. BufferedOutputStream объектісіне шығу кез келген OutputStream-дегі шығуға ұқсас, айырмашылығы – жаңа ішкі класта буферді күштеп тазартуға және онда сақталатын ақпаратты сыртқы құрылғыға физикалық шығару үшін қолданылатын қосымша flush әдісі қамтылады. Осы класс конструкторының бірінші қалпы: BufferedOutputStream(OutputStream out) өлшемі 32 байт болатын буфері бар ағын құрады. Екінші қалып: BufferedOutputStream(OutputStream out, int size) буфердің талап етілетін өлшемін беруге мүмкіндік береді.

PushbacklnputStream. Буферленудің ерекше қолданылуларының бірі – pushback (кері қайтару) операциясын іске асыру. Pushback InputStream-ге символды оқып болған соң оны кіру ағынына кері қайтару үшін қолданылады. Алайда PushbacklnputStream класының мүмкіндіктері едәуір шектелген – бір символдан артық символдар санын ағынға кері қайтарудың кез келген тырысуы IOException ерекшелігін дереу қоздыруға алып келеді. Бұл кластың жалғыз ғана PushbackInputStream(InputStream in) конструкторы бар.

Бізге жақсы таныс InputStream класының әдістерінен бөлек, PushbacklnputStream аргументпен берілген ch символын кіру ағынына қайтаратын unread(int ch) әдісін қамтиды.



SequencelnputStream. SequencelnputStream класы бірнеше кіру ағындарының біреуге бірігу жаңа мүмкіндігін қолдайды. SequenceInputStream класының конструкторында параметр ретінде InputStream-ның екі объектісі немесе InputStream объектілерінің жиынтығын қамтитын тізілгендер қолданылады:

SequenceInputStream(Enumeration e) SequenceInputStream(InputStream s0, InputStream s1)

Жұмыс барысында класс ақпаратты бірінші кіру ағынынан ол аяқталмайынша есептей отыры, сонан соң екіншісіне өте отырып және т.б., келіп түскен сұраныстарды орындайды.



PrintStream. PrintStream класы дипломдық жұмыстың басынан бастап System дестесінің файлдық дескрипторлары арқылы шығару үшін біз мысалдарда қолданған форматтау утилиталарының барлығын ұсынады. Сіз “System.out.println” жазуға үйреніп қалдыңыз, бұл кезде шығарылатын ақпаратты форматтаумен айналысатын кластар туралы соншалықты ойланбайсыз. PrintStream класының екі конструторы бар:

PrintStream(OutputStream out) и PrintStream(OutputStream out, boolean autoflush).

Олардың екіншісінің autoflush параметрі Java-ның атқарушы ортасы автоматты түрде шығу ағыны үстінен буферді тазарту операциясын орындау немесе орындамау керектігін көрсетеді.

PrintStream-ның Java-объектілерінде кез келген деректер типімен, соның ішінде, Object-пен де жұмыс жасай алатын print және println әдістері бар. Егер осы әдістердің аргументі ретінде тікелей типтердің біреуі де қолданылмаса, онда олар Object класының toString әдісін шақырады, осыдан соң алынған нәтижені шығарады. Java оқиғаларын өңдеу моделі. Оқиғаларды өңдеудің жаңа моделі, мәні бойынша, өңделген шақырулар моделі (callback) ретінде келген. GUI-элементін құру барысында оған әдісте нақты бір оқиға (батырманың, тышқанның басылуы және т.с.с.) пайда болған кезде қай әдісті немесе әдістерді шақыру керектігі хабарланады. Бұл моделді C++-те қолдану өте оңай, себебі бұл тіл осы әдістерге нұсқаушылар үстінен операциялар орындауға мүмкіндік береді (кері шақыруды анықтау үшін жай ғана көрсеткішті функцияға беру қажет). Алайда Java-да бұған жол жоқ (әдістер объектілер болып табылмайды). Сондықтан жаңа моделді іске асыру үшін әлдебір арнайы интерфейсті іске асыратын класты анықтау қажет. Сонан соң мұндай кластың экземплярын кері шақыруды қамтамасыз ету үшін GUI-элементке беруге болады. Күтілген оқиға келген кезде GUI-элемент алдын ала анықталған объектінің сәйкес әдісін шақырады.

Java 1.1 оқиғаларды өңдеу моделі AWT дестесінде де, JavaBeans API-де де қолданылады. Бұл моделде оқиғалардың түрлі типтеріне Java-ның әр түрлі класы сәйкес келеді. Әрбір оқиға java.util.EventObject класының ішкі класы болып табылады. Осы бөлімде қарастырылатын AWT дестесінің оқиғалары java.awt.AWTEvent-тің ішкі кластары болып табылады. Ыңғайлылық үшін AWT дестесінің түрлі типтегі оқиғалары (мысалы, MouseEvent немесе АсtionEvent) java.awt.event жаңа дестесіне орналасқан.

Әрбір оқиға үшін оны тудырушы объект болады, оны getSource() әдісінің көмегімен алуға болады, және AWT дестесінің әрбір оқиғасына getid() әдісін алуға мүмкіндік беретін нақты идентификатор сәйкес келеді. Бұл мән оқиғалардың бір класпен сипатталуы мүмкін әр түрлі типтегі оқиғаларды ажырату үшін қолданылады. Мысалы, FocusEvent класы үшін оқиғалардың екі типі мүмкін: FocusEvent.FOCUS_GAINED және FocusEvent.FOCUS_LOST. Оқиғалардың ішкі кластары осы оқиға типімен байланысты ақпаратты қамтиды. Мысалы, MouseEvent класында getX(), getY() және getClickCount () әдістері бар. Бұл класс өзгелер қатарында getModifiers() және getWhen() әдістерін де мұралап алады.

Java 1.1 оқиғаларды өңдеу моделі оқиғаларды тыңдаушылар концепциясына негізделеді. Оқиғаны тыңдаушы ретінде берілген оқиғаны алуға қызыққан объект табылады. Оқиғаны тудыратын объектіде (оқиғалар бастауында) аталған оқиға орындалғаны туралы хабарлама алуға, сонымен қатар, тыңдаушыларға осы тізімге өздерін қосуға немесе алып тастауға мүмкіндік беретін әдістерге қызығатын тыңдаушылар тізімі бар. Бастау көзі оқиға тудырған кезде (немесе бастау көзінің объектісі қолданушы енгізген ақпаратпен байланысты оқиғаны тіркейді) ол оқиға тыңдаушыларының барлық объектілерін аталған оқиға орындалғаны туралы хабарлайды.

Оқиға бастауы тыңдаушының объектісін арнайы әдісті шақыру арқылы және оған оқиға объектісін (EventObject ішкі класының экземплярын) беру жолымен хабарлайды. Бастау көзі аталған әдісті шақыра алуы үшін ол әрбір қолданушы үшін іске асырылған болуы тиіс. Бұл нақты бір типтегі оқиғаның барлық тыңдаушылары сәйкес интерфейсті жүзеге асырулары тиістігімен түсіндіріледі. Мысалы, ActionEvent оқиғасын тыңдаушылардың объектілері ActionListener интерфейсін іске асыруы тиіс. Java.awt.event дестесінде онда анықталған оқиғалар типтерінің әрқайсысы үшін тыңдаушылар интерфейстері анықталған (мысалы, MouseEvent оқиғасы үшін мұнда тыңдаушылардың екі интерфейсі анықталған: MouseListener және MouseMotionListener). Оқиға тыңдаушыларының барлық интерфейстері java.util.EventListener интерфейсінің кеңейтілімдері болып табылады. Бұл интерфейсте әдістердің ешбірі де анықталмайды, бірақ ол құрамында барлық оқиға тыңдаушылары біртекті анықталған интерфейс-таңбаның рөлін атқарады.

Оқиғаларды тыңдаушының интерфейсінде бірнеше әдіс анықтала алады. Мәселен, MouseEvent секілді оқиғалар класы тышқан батырмасын басу және жіберу сияқты тышқанмен байланысты бірнеше оқиғаны сипаттайды. Бұл оқиғалар сәйкес тыңдаушының түрлі әдістерін шақырады. Орнатылған келісім бойынша оқиғалар тыңдаушыларының әдістеріне аталған тыңдаушыға сәйкес келетін оқиғаның объектісі болып табылатын жалғыз ғана аргумент беріле алады. Бұл объектіде аталған оқиғаға жауап реакциясын қалыптастыруға арналған бағдарламаға қажетті бүкіл ақпарат қамтылуы тиіс. 6-кестеде java.awt.event дестесінде анықталған оқиғалар типі, оларға сәйкес тыңдаушылар келтірілген.

Оқиғалар тыңдаушысының интерфейсінде бірнеше әдістер анықтала алады. Мысалы, MouseEvent секілді оқиғалар класы тышқан батырмасын басу және жіберу сияқты тышқанмен байланысты бірнеше оқиғаларды сипаттайды. Бұл оқиғалар сәйкес тыңдаушының түрлі әдістерін шақырады. Орнатылған келісім бойынша оқиғалар тыңдаушыларының әдістеріне аталған тыңдаушының оқиғасына сәйкес келетін объект болып табылатын жалғыз ғана аргумент беріле алады. Бұл объектіде осы оқиғаға жауап реакциясын қалыптастыру үшін бағдарламаға қажетті бүкіл ақпарат қамтылуы тиіс. 6-кестеде java.awt.event дестесінде анықталған оқиғалар типтері, оларға сәйкес тыңдаушылар, сонымен бірге, тыңдаушының әрбір интерфейсінде анықталған әдістер келтірілген.

Құрамында бірнеше әдістері бар оқиға тыңдаушыларының әрбір интерфейсі үшін java.awt.event дестесінде сәйкес интерфейс әдістерінің әрқайсысы үшін бос денені қамтамасыз ететін қарапайым класс-адаптер анықталған. Осындай тек бір немесе екі әдіс қажет болған кезде, кейде интерфейсті өз бетіңізбен іске асырғаннан гөрі класс-адаптердің ішкі класын алу жеңілірек. Адаптердің ішкі класын алу барысында қажет әдістерді ғана қайта анықтау қажет, ал интерфейсті тікелей іске асырған кезде, барлық әдістерді қайта анықтау қажет, соның ішінде, аталған бағдарламаға қажеті жоқтарын да. Алдын ала анықталған класс-адаптерлер олардың өздері іске асыратын интерфейстер сияқты аталады, бірақ бұл атауларда Listener Adapter: MouseAdapter-ге, WindowAdapter-ге және т.б. ауыстырылады.

Тыңдаушы интерфейсі орынадала салысымен немесе класс-адаптердің ішкі кластары қабылданған соң, оқиға тыңдаушысының нақты объектісін анықтау үшін жаңа класс экземплярын құру қажет. Сонан соң бұл тыңдаушы оқиғаның сәйкес бастауымен тіркелуі тиіс. AWT дестесінің бағдарламаларында оқиғалар бастауы болып әрқашан дестенің әлдебір элемнті табылады. Оқиға тыңдаушыларын тіркеу әдістерінде атаулар туралы тұрақты келісімдер қолданылады: егер бастау көзі Х типті қиғалар тудыратын болса, оның құрамында тыңдаушыны қосу үшін addXListener () әдісі және оны жою үшін removeXListener() әдісі бар. Java 1.1 оқиғаларды өңдеу моделінің жағымды ерекшеліктерінің бірі болып аталған элементпен тудырылатын оқиғалар типтерін оғай анықтау мүмкіндігі табылады. Бұл үшін қай әдістер оның оқиға тыңдаушысы үшін тіркелгенін жай ғана қарап шығу жеткілікті. Мысалы, Button класының объектісі үшін АРІ сипаттамасынан оның ActionEvent оқиғасын тудыратынын білуге болады.

Төменгі суретте бейнелегендей, біз машиналарды оңдату үшін, машина бөлшектерін сататын қызмет көрстету орталығыны таңдадық. Осы батырмаға басқан кезінде, тұтынушыға өзінің бағасын белгілеуге мүмкіндің беріледі. Сурет 3.5.






Достарыңызбен бөлісу:
1   ...   6   7   8   9   10   11   12   13   14




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет