- •5B060200 Информатика мамандығының білім алушыларына арналған
- •3. Оқу жоспары бойынша сағаттардың бөлінуі
- •5. Оқу пәнінің сипаттамасы
- •6. Пәннің оқу-әдістемелік қамтамасыз етілуі
- •Оқу нәтижелерін бағалау және бақылау
- •8. Оқу пәнінің саясаты
- •2.Глосарий.
- •3. Дәрістер тезисі.
- •Лексикалық негіздер
- •Бос орындар
- •Комментарилер
- •Логикалық литералдар
- •Символды литералдар
- •Жолдық литералдар
- •Операторлар
- •Қарапайым типтер
- •Операторлар
- •If (логикалық өрнек) оператор1; [ else оператор2;]
- •Switch операторы
- •Return операторы
- •Цикл операторы while
- •Цикл операторы do-while
- •Continue операторы
- •3 Дәріс. Массивтер
- •Бір өлшемді массивтерді өңдеу.
- •Көп өлшемді массивтер
- •Конструкторлар
- •4 Дәріс. Класстар және объектілер
- •Кластар
- •Айнымалы өкілдері (instance variables)
- •Әдістерді хабарлау
- •Айнымалы өкілдерін жасыру
- •Конструкторлар
- •This –ті конструкторларда қолданылуы
- •5 Дәріс. Әдістер және конструкторлар
- •Әдістерді хабарлау
- •Айнымалы өкілдерін жасыру
- •Конструкторлар
- •6 Дәріс. Мұрагерлік және әдістерді қайта анықтау
- •Мұрагерлік
- •7 Дәріс. Мұрагерлік және әдістерді қайта анықтау
- •Көп деңгейлі мұрагерлік
- •Динамикалық құрылымдар
- •9 Дәріс. Мәтінмен жұмыс
- •Конструкторлар
- •Жолдарды реттеу
- •IndexOf және lastIndexOf әдістерінің қолданылу
- •14 Дәріс. Графикалық интерфейсті программа құру
- •15 Дәріс: Графикалық интерфейсті программа құру
- •4) Негізгі және қосымша әдебиеттер тізімі
- •5) Зертханалық сабақтар жүргізу жоспары
- •Әдістемелік нұсқау
- •Зертханалық жұмыс № 1
- •Арифметикалық операторлар
- •Биттік меншіктеу операторлары
- •Зертханалық жұмыс 2 Тақырыбы: Java тілінің басқару инструкциялары. Шартты оператор.
- •If (логикалық өрнек) оператор1; [ else оператор2;]
- •Switch операторы
- •Зертханалық жұмыс 3
- •Цикл операторы for
- •Үтір операторы
- •Continue операторы
- •Зертханалық жұмыс 4
- •Зертханалық жұмыс 5
- •Зертханалық жұмыс 6
- •New операторы
- •Зертханалық жұмыс 7
- •Зертханалық жұмыс 8-9
- •Зертханалық жұмыс 10
- •Интерфейстер
- •Интерфейстік сілтемелер
- •Интерфейстер кеңеймесі
- •Зертханалық жұмыс 11
- •Конструкторлар
- •Жолдарды реттеу
- •IndexOf және lastIndexOf әдістерінің қолданылу
- •Жолдарды өңдеу функциялары
- •Зертханалық жұмыс 12
- •Зертханалық жұмыс 13
- •Зертханалық жұмыс 14 Тақырыбы:Енгізу-шығару жүйесі
- •Зертханалық жұмыс 15 Тақырыбы: Графиктік интерфейспен программалар құру
- •Java негіздері
- •Java басқару инструкциялары
- •Массивтер
- •Зертханалық сабақ тапсырмалары № 4 Кластары және объектілер
- •Әдістер және конструкторлар
- •Мұрагерлік және әдісті қайта анықтау
- •Мұрагерлік және әдісті қайта анықтау (жалғасы)
- •Зертханалық сабақ тапсырмалары № 8 Пакеттер және интерфейстер
- •Мәтінмен жұмыс
- •Зертханалық сабақ тапсырмалары № 10 Ерекше жағдайларды өңдеу
- •Көп ағынды программалау
- •Зертханалық сабақ тапсырмалары (жалғасы) № 13
- •Графиктік интерфейспен программалар құру
- •Графиктік интерфейспен программалар құру (жалғасы)
- •6) Өзіндік жұмыс тапсырмалары
- •7) Ағымдық және аралық бақылау сұрақтары мен қорытынды бақылау материалы
- •9.Оқу сабақтарын бағдарламалық және мультимедиялық сүйемелдеу тізімі (пәннің мазмұнына байланысты)
7 Дәріс. Мұрагерлік және әдістерді қайта анықтау
Дәріс мақсаты: көп деңгейлі мұрагерлік, суперкласстың объектілі айнымалылары және әдістерді динамикалық басқару, абстрактілі кластармен танысу
Көп деңгейлі мұрагерлік
Объектілі-бағытталған программалаудың екінші негізгі қасиеті - мұрагерлік (бірінші – инкапсуляция). Класстар-ұрпақтар тек қана өз айнымалылары мен әдістерін ғана құрып қоймай, сондай-ақ кластар-бабалар әдістері мен айнымалылардың мұрагері болады. Класс-ұрпақ ішкі кластар деп аталады. Ал берілген кластың бабасын оның суперкласы деп атайды. Кезекті мысалда класты қалай кеңейту керектігі көрсетілген. Point класының айнымалыларына үшінші z айнымалысы қосылады.
class Point3D extends Point { int z;
Point3D(int x, int y, int z) {
this.x = x;
this.у = у;
this.z = z;
}
Point3D() {
this(-1,-1,-1);
}
}
Бұл мысалдағы extends кілттік сөзі трансляторға Point класы үшін ішкі класс құрылатындығын хабарлайды. Бұл класта х және у айнымалыларын хабарлау қажет болмады. Себебі, Point3D класы Point суперкласының мұрагері.
Динамикалық құрылымдар
Программаны компиляциялау барысында барлық айнымалылардың есімдері жады ұяшықтарының адрестеріне түрлендіріледі. Осы адрестер бойынша айнымалылардың сәйкес мәндері сақталады. Көрсеткіштердің көмегімен программист тікелей ұяшық адрестерімен жұмыс істей алады. Көрсеткіш дегеніміз өзінің мәні ретінде ұяшық адресін қабылдай алатын айнымалы. Көрсеткіш типтелген немесе типтелмеген болуы мүмкін. Егер көрсеткіш берілген типті айнымалыға сілтеме жасаса, онда оны типтелген көрсеткіш деп атайды.
Өрістерінің бірі көрсеткіш болып келетін кластар жадыда сызықты және сызықты емес байланысқан құрылымдарды анықтауға мүмкіндік береді. Сызықты байланысқан құрылымдарға стектер, кезектер, тізімдер жатады. Тізімдер көрсеткіштер санына және олардың өзара байланысуына қарай бір бағытталған, екі бағытталған, сақина түріндегі тізімдерге бөлінеді.
Сызықты емес құрылымдарға ағаштар, графтар жатады.
Тізімге қолданылатын негізгі операциялар:
бос тізімді құру;
тізімнің элементтерінің бар болуын анықтау;
алдыңғы, кейінгі элементтерінің бар болуын анықтау;
ағымдағы элемент ретінде алғашқы, соңғы, алдыңғы, кейінгі элементтерді алу;
ағымдағы элементтің мәнін алу;
ағымдағы элементті негізгі типті басқа мәнге өзгерту;
ағымдағы элемнет ретінде алдыңғы немесе кейінгі элемент болатындай ағымдағы элементті тізімнен шығару;
ағымдағы элементтің алдына немесе кейін жаңа негізгі типті элемент енгізу.
Тізімдерге қолданылатын операцияларды шектеу арқылы берілгендерді өңдеу барысында өте көп қолданылатын кезек, стек құрылымдарын алуға болады.
Кезекке қолданылатын негізгі операциялар:
бос кезекті құру;
кезектің элементтерінің бар болуын анықтау;
кезектің алғашқы элементін оны кезекте жою арқылы алу;
типі негізгі типке сәйкес элементті кезектің соңына орналастыру.
Стекке қолданылатын негізгі операциялар:
бос стекті құру;
стектің элементтерінің бар болуын анықтау;
стектің соңғы элементін оны стектен жою арқылы алу;
типі негізгі типке сәйкес элементті стектің соңына орналастыру.
Ағашқа қолданылатын негізгі операциялар:
тривиальді ағашты құру;
ағаштың түбірін алу;
берілген түбірдің ішкі ағаштар тізімін алу;
ағаштың түбірін алмастыру;
берілген түбірдің ішкі ағаштар тізімін алмастыру;
Графтарға қолданылатын негізгі операциялар:
бос графты құру;
тізімдерге арналған барлық негізгі операциялар.
Келтірілген операциялар аргументтері, қайтарылатын мәндері операцияның қызметіне сәйкес болатындай әдістер ретінде ұйымдастырылуы керек.
Ағаштарды белгілі бір негізгі типтен құрылған құрылымдар жиыны анықтайды. Әр бір құрылым төбеден немесе берілген ағаштың түбірінен және берілген ағаштың ішкі ағаштары болып саналатын элементтер тізімінен тұрады. Ішкі ағаштары жоқ ағаш тривиальды ағаш деп аталады. Тривиальды ішкі ағаштың түбірі жапырақ деп аталады.
Бағытталған графтарды төбелер деп аталатын Т типті элементтерден тұратын тізім және доғалар деп аталатын Q типінен тұратын элементтер тізімі анықтайды. Әр бір төбе үшін осы төбеден шығатын доғалар тізімі және осы төбеге кіретін доғалар тізімі бар болады. Бос төбелер және бос доғалар тізімінен тұратын графты бос граф деп атайды. Ал тек доғасыз бір ғана төбеден тұратын графты тривиальды граф деп атайды.
Графтарды төбелер деп аталатын Т типті элементтерден тұратын тізім және қабырғалар деп аталатын Q типінен тұратын элементтер тізімі анықтайды. Әр бір төбе үшін осы төбеден шығатын (инцидентті) қабырғалар тізімі, ал әрбір қыр үшін осы қыр қосатын екі элементтен тұратын тізім анықталады.
Әдебиеттер
Васильев А.Н. Java. Объектно-ориентированное программирование: Учеб. пособ. – СПб.: Питер, 2011. – 400 с. [В]
Казарин С.А., Клишин А.П. Среда разработки Java-приложений Eclipse: (ПО для объектно-ориентирован-ного программирования и разработки приложений на языке Java): Учеб. пособ., Москва, 2008. – 77 с. [К]
Монахов В.В. Язык программирования Java и среда NetBeans. – 3-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2011. – 704 с.
8 дәріс. Пакеттер мен интерфейстер
Дәріс мақсаты: Java пакеттері, интерфейстер, интерфейсті сілтемелер, интерфейстердің кеңейілуімен танысу, Мысалдар келтіру.
Визуалды программалауды жүзеге асыру үшін мұрагерлікті қолданып алдын - ала анықталған кластардың сипаттамаларын енгіземіз. Ол үшін import конструкциясы қолданылады. Текстік өріске енгізілген санды алып, кездейсоқ сандармен толтырылған массивте cол санның кездесетіндігін анықтау программасы. Java тілін меңгеруді жалғастыру үшін қосымша тапсырмалар.
Массивте іздестіру есептері
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JButton;
import java.util.Random;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Find_num extends JFrame implements ActionListener{
private JLabel label;
private JTextField text;
private JTextArea ta;
private JButton button;
private int[] num;
private boolean found = false;
private int number, i;
public Find_num(){
setTitle("Массивтегі санды анықтау");
//Терезе тақырыбы
this.setLayout(null);
label = new JLabel("Санды енгізу:");
//Тұрақты текстік өріс құру
text = new JTextField();
//Текстік өріс құру
ta = new JTextArea();
//Текстік аймақ құру
button = new JButton("Табу");
//Батырма құру
label.setBounds(20, 130, 110, 15);
//Тұрақты текстік өрістің параметрлерін беру
this.add(label);
//Терезеге тұрақты текстік өріс қосу
text.setBounds(120, 130, 30, 20);
//Текстік өрістің параметрлерін беру
this.add(text);
//Терезеге текстік өріс қосу
ta.setBounds(20, 20, 217, 100);
//Текстік аймақтың параметрлерін беру
ta.setLineWrap(true);
//Текстік аймақта жолды тасымалдауды анықтау
ta.setEditable(false);
//Текстік аймақта мәліметтерді өзгерту мүмкіндігін алып тастау
button.setBounds(160, 130, 80, 20);
//Батырманың параметрлерін беру
Random rg = new Random();
//Кездейсоқ сандар объектісін құру
num = new int[70];
//Бүтін типті 70 саннан тұратын массив құру
for(i=0; i<70; i++){
//Массив элементтерін анықтау циклі
num[i] = rg.nextInt(100);
//Массив элементіне (0..100) аралығындағы кездейсоқ санды меншіктеу
ta.append(num[i] + " ");
//Массив элементі текстік аймақта бейнеленеді
}
this.add(button);
//Терезеге кнопканы қосу
button.addActionListener(this);
//Батырмаға әрекетті қосу
this.add(ta);
//Текстік аймақты терезеге қосу
this.setSize(270, 200);
//Терезенің өлшемдерін беру
this.setVisible(true);
//Терезенің көрінуін анықтау
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
//Терезенің жабылуы кезіндегі келісім бойынша анықталған операцияны беру
}
public void actionPerformed(ActionEvent e){
//әрекетті анықтау
if(e.getSource() == button){
//егер әрекет көзі button батырмасы болса
if(!text.getText().equals("")&&isIntNumber(text.getText())){
//текстік өрісте санның бейнесі болса
number = Integer.parseInt(text.getText());
//тексті санға түрлендіріп number айнымалысына меншіктеу
for(i=0; i<70;i++){
//массивте енгізілген санның кездесетіндігін анықтау циклі
if (number == num[i]){
//егер сан ағымдағы элементке тең болса
found = true;
//found айнымалысына ақиқат мәнін меншіктеу және
break;
//циклді аяқтау
}
}
if (found)
//егер found айнымалысының мәні ақиқат болса
JOptionPane.showMessageDialog(null,"Сәйкес элемент номері" + (i+1) + ". Іздестіру сәтті аяқталды.");
//хабарламасы бар терезені шығару
else
//егер found айнымалысың мәні жалған болса
JOptionPane.showMessageDialog(null, "Сәйкестік табылмады.");
// хабарламасы бар терезені шығару
}
else
//егер өрісте бос жол немесе цифрдан өзге символ болса
{
JOptionPane.showMessageDialog(null, "Сан енгізіңіз!");
// хабарламаны терезеге шығару
text.setText("");
//өрісті тазарту
}
}
}
public static void main(String args[]){
Find_num fn = new Find_num();
}
public boolean isIntNumber(String num){
//сандық мәнді анықтау функциясы
try{
Integer.parseInt(num);
//тексті бүтін санға түрлендіру
}
catch(NumberFormatException nfe){
//қате туындау барысында
return false;
//жалған мәнін қайтару
}
return true;
//кері жағдайда ақиқат мәнін қайтару
}
}
Әдебиеттер
Васильев А.Н. Java. Объектно-ориентированное программирование: Учеб. пособ. – СПб.: Питер, 2011. – 400 с. [В]
Казарин С.А., Клишин А.П. Среда разработки Java-приложений Eclipse: (ПО для объектно-ориентирован-ного программирования и разработки приложений на языке Java): Учеб. пособ., Москва, 2008. – 77 с. [К]
Монахов В.В. Язык программирования Java и среда NetBeans. – 3-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2011. – 704 с.
