Pl lecture7

26
L o g o Програмчлалын хэл Олон Улсын Улаанбаатар Их Сургууль 2015 он Класс, функцын тухай багш Б.Ганзориг

Transcript of Pl lecture7

Page 1: Pl lecture7

L o g o

Програмчлалын хэл

Олон Улсын Улаанбаатар Их Сургууль 2015 он

Класс, функцын тухайбагш Б.Ганзориг

Page 2: Pl lecture7

L o g o

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Агуулга

Функц түүний хэрэглээ 3

Функцийн аргумент дамжуулалт 4

1

2

Классын удамшил5

Байгуулагч функцын тухай6

JTextArea классын тухай, хэрэглээ

Java сан (Package)

Классын хувьсагчид7

Page 3: Pl lecture7

L o g o

Функц зарлалт

Функц Програм бичих процессийг

хялбаршуулах Шаардлагатай үед дуудаж хэрэглэх Кодыг давтаж бичих үзэгдлээс

сэргийлэх Локал хувьсагч

Функц дотор зарлагдсан хувьсагч

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Page 4: Pl lecture7

L o g o

Функц зарлалт

Функцийг дараах байдлаар зарлана:

public БуцаахТөрөл ФункцНэр (ПараметрТөрөл Параметр)

public static БуцаахТөрөл ФункцНэр(ПараметрТөрөл

Параметр) Жишээ:

public int square (int y)

public String getName (int x, int y) Return түлхүүр үг ашиглан функц дотроос утга буцаадаг.

Return бичлэгийг ажиллуулангуут функц дуусаж програмын удирдлага уг функцийг хаанаас дуудсан тэнд буцаасан утгыг авч очдог.

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Page 5: Pl lecture7

L o g o

Функц ашиглалт

Cтатик функц ашигласан жишээ. Эхний 10 ширхэг тооны кубыг ол.

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

public class FunctionDemo{public static int cube (int x){

return x * x * x; }

public static void main ( String args[] ){

for ( int i = 1; i <= 10; i++)System.out.println( cube ( i ) );

}}

Page 6: Pl lecture7

L o g o

Функц ашиглалт

Cтатик биш функц ашигласан жишээ. Эхний 10 ширхэг тооны кубыг ол.

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

public class FunctionDemo{public int cube (int x){

return x * x * x; }

public static void main ( String args[] ){

FunctionDemo myObject = FunctionDemo();

for ( int i = 1; i < 10; i++)System.out.println( myObject.cube ( i ) );

}}

Page 7: Pl lecture7

L o g o

Функц дуудалт

Нэг классын функцүүд бие биенээ дуудах дүрэм: Нэг классын статик функцээс тухайн классын

статик биш функцийг дуудвал заавал уг классын обьектоор дамжуулж дуудна.

Нэг классын статик функцээс тухайн классын статик функцийг дуудвал шууд нэрээр нь эсвэл обьектоор нь дуудаж болно.

Нэг классын статик биш функцээс тухайн классын статик болон статик биш функцийг дуудвал шууд нэрээр нь эсвэл обьектоор нь дуудаж болно.

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Page 8: Pl lecture7

L o g o

Функц дуудалт

Нэг классаас өөр классын функц дуудах тохиолдолд: Өөр классын статик функцийг дуудвал заавал

классын нэрээр нь дуудна.• Жишээ нь B класс дотроос А классын static add функцийг

дуудвал:– A.add( );

Өөр классын статик биш функцийг дуудвал заавал обьектоор нь дамжуулж дуудна.• Жишээ нь B класс дотроос А классын add функцийг

дуудвал:– A myObject = new A( );– myObject.add( );

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Page 9: Pl lecture7

L o g o

Функцийн параметр дамжуулалтJava-д хоёр төрлийн параметр (аргумент)

дамжуулалт байдаг. Утгаар дамжуулах (Pass by Value)

• Дамжуулагдаж байгаа параметрийн утгыг хуулаад функцэд дамжуулна.

• Өгөгдлийн үндсэн төрлүүд (int, char, гэх мэт эхний үсэг нь жижгээр бичигддэг төрлүүд) бүгд утгаар дамжигддаг.

Заалтаар дамжуулах (Pass by Reference)• Дамжуулж буй өгөгдлийн эх хувийг дамжуулна.• Дуудагдсан функц энэ эх хувийг өөрчилж болно.• Утгаар дамжуулахыг бодвол илүү хурдан байдаг.• Java-д бүх обьектууд заалтаар дамжигддаг.

Java –д массив бол обьект юм.

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Page 10: Pl lecture7

L o g o

Функцийн параметр дамжуулалт

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

public class ArgumentDemo{ public void sub(int x)

{System.out.println(“x =: ” + x);x = x + 1;System.out.println(“x =: ” + x);

} public static void main()

{int z =12;System.out.println(“z =: ” + z);sub(z);System.out.println(“z =: ” + z);}

Page 11: Pl lecture7

L o g o

Утгаар параметр дамжуулах

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

public class ArgumentDemo{public void sub(String m){

System.out.println(“Функц дотор эхлээд: ” + m);m = “C++”System.out.println(“Функц дотор дараа нь: ” + m);

}public static void main()

{String m = “Java”;System.out.println(“Дамжуулахын өмнө: ” + m);sub(m);System.out.println(“Дамжуулсны дараа: ” + m);}

}

Page 12: Pl lecture7

L o g o

Заалтаар параметр дамжуулах

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

public class ArgumentDemo{public void sub(String s){System.out.println(“Функц дотор эхлээд: ” + s[0] + “ “ + s[1]);s[0] = “C”;s[1] = “is procedural.”;System.out.println(“Функц дотор дараа нь: ” + s[0] + “ “ + s[1]);}

public static void main(){String m[] = {“Java”,”is object oriented.”};System.out.println(“Дамжуулахын өмнө: ” + m[0] + “ “ + m[1]);sub(m);System.out.println(“Дамжуулсны дараа: ” + m[0] + “ “ + m[1]);}

}

Page 13: Pl lecture7

L o g o

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Классын удамшил (inheritance)

Java-н класс бүр ямар нэгэн классыг удамшуулсан байдаг.

Удамшуулахдаа extends түлхүүр үгийг ашиглана: public class Car extends Vehicle{…

Хэрвээ extends үгийг ашиглаагүй байвал java.lang.Object классаас удамшдаг.

Page 14: Pl lecture7

L o g o

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

JTextArea класс

Олон мөрөөс тогтсон текстүүдийг цонхон дээр дүрслэх чадвартай.

Цагаан хэсэг нь JTextArea

Page 15: Pl lecture7

L o g o

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

JTextArea класс

Ашиглахын тулд

import javax.swing.JTextArea; эсвэл import javax.swing.*; гэж оруулж өгнө.

Обьектийг нь зарлана:

JTextArea myText = new JTextArea();

Текстийг нь setText функцээр нь оруулж өгдөг.

myText.setText (“Hello class!”);

Page 16: Pl lecture7

L o g o

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

JTextArea класс ашигласан жишээ

Page 17: Pl lecture7

L o g o

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

JTextArea класс ашигласан жишээ үр дүн

Page 18: Pl lecture7

L o g o

Програмчлалын хэл

Санамсаргүй тоо гаргах жишээ

Улаанбаатар Их Сургууль 2013 он

Page 19: Pl lecture7

L o g o

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Санамсаргүй тоо гаргах жишээ

Page 20: Pl lecture7

L o g o

Java сан (Package)

Урьдчилан бэлдэж өгсөн классууд Java-ийн санд бүлэг бүлгээрээ байдаг.

Нэг төрлийн үүрэг гүйцэтгэдэг классууд нэг сан дотор байрладаг.

Санг import түлхүүр үгийн тусламжтай ашигладаг.

Жишээ нь:

import javax.swing.JOptionPane;

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Page 21: Pl lecture7

L o g o

Жишээ сангууд

java.lang: java дээр бичигдсэн ихэнх програмууд ашигладаг гол үндсэн функцүүд байрлана. Бүх java програмд автоматаар импортлогддог.

javax.swing: График, цонх ашигласан java программуудад хэрэглэгдэнэ.

java.applet: аудио, клип, интернэт програмчлалд ашиглагдах аплет класс.

java.util: огноо, тэмдэгт мөр, санамсаргүй тоотой ажиллах классууд байрлана.

java.io: Java-н оролт гаралтын классууд. Файлаас угших, бичих гэх мэт.

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Page 22: Pl lecture7

L o g o

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Классын байгуулагч функц (constructor)

Классын обьектийг үүсгэн анхны утгыг нь олгоход хэрэглэгдэнэ.

Обьектийг үүсгэх үед дуудагддаг.Класс дотор зарлагдана.Нэр нь классын нэртэй адилхан

байна.Аргумент авч болох боловч утга

буцаадаггүй.

Page 23: Pl lecture7

L o g o

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Классын байгуулагч функц (constructor)

Нэг класст олон байгуулагч функц байж болно.

(Дахин тодорхойлолт= overloading)

new ClassName( argument1, argument2, …, arugmentN );

new нь шинэ обьект үүсгэж байгааг илтгэнэ. ClassName нь ямар төрлийн обьект үүсгэж

байгааг заана. Аргументууд нь классын энэ байгуулагч функцэд

дамжуулагдана.• TestClass myObject = new TestClass();• TestClass myObject = new TestClass(1, 5, “test”);

Page 24: Pl lecture7

L o g o

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Классын хувьсагчид

Классын хувьсагчид нь уг классын бүх функцүүдэд ашиглагдаж болно.

Классын хувьсагчдийг классын эхэнд функцүүдийн өмнө зарладаг.

Классын хувьсагчид нь хандалтын тодорхойлогчтой байдаг:

• Public• Private• protected

Page 25: Pl lecture7

L o g o

Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он

Классын хувьсагчид

Public хувьсагч: ийм хувьсагчид програмд оролцож байгаа бүх классын функцүүд хандаж чадна.

• public String name;Protected хувьсагч: ийм хувьсагчид уг

классын функцүүд болон түүнээс удамшсан классын функцүүд хандаж чадна.

• protected int x;Private хувьсагч: ийм хувьсагчид зөвхөн

уг классын л функцүүд хандаж чадна.• private int age;

Page 26: Pl lecture7

L o g o

Олон улсын Улаанбаатар Их Сургууль 2015 он

Програмчлалын хэл