Enviar pesquisa
Carregar
Cs203 lecture 14 reflection
•
3 gostaram
•
846 visualizações
Jargalsaikhan Alyeksandr
Seguir
reflection
Leia menos
Leia mais
Educação
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 19
Recomendados
Sw203 Lecture10 Polymorphism
Sw203 Lecture10 Polymorphism
Jargalsaikhan Alyeksandr
Sw203 Lecture12 Composition
Sw203 Lecture12 Composition
Jargalsaikhan Alyeksandr
Sw203 Lecture7 Method Override
Sw203 Lecture7 Method Override
Jargalsaikhan Alyeksandr
Sw203 Lecture4 Class Object
Sw203 Lecture4 Class Object
Jargalsaikhan Alyeksandr
Sw203 Lecture9 Encapsulation
Sw203 Lecture9 Encapsulation
Jargalsaikhan Alyeksandr
Лекц 6 - 7
Лекц 6 - 7
Chinzorig Undarmaa
Sw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess Modifiers
Jargalsaikhan Alyeksandr
Лекц-3
Лекц-3
bsuren_bn
Recomendados
Sw203 Lecture10 Polymorphism
Sw203 Lecture10 Polymorphism
Jargalsaikhan Alyeksandr
Sw203 Lecture12 Composition
Sw203 Lecture12 Composition
Jargalsaikhan Alyeksandr
Sw203 Lecture7 Method Override
Sw203 Lecture7 Method Override
Jargalsaikhan Alyeksandr
Sw203 Lecture4 Class Object
Sw203 Lecture4 Class Object
Jargalsaikhan Alyeksandr
Sw203 Lecture9 Encapsulation
Sw203 Lecture9 Encapsulation
Jargalsaikhan Alyeksandr
Лекц 6 - 7
Лекц 6 - 7
Chinzorig Undarmaa
Sw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess Modifiers
Jargalsaikhan Alyeksandr
Лекц-3
Лекц-3
bsuren_bn
Sw203 Lecture6 Inheritance
Sw203 Lecture6 Inheritance
Jargalsaikhan Alyeksandr
Cs203 lecture13 composition
Cs203 lecture13 composition
Jargalsaikhan Alyeksandr
Java lecture5
Java lecture5
Onobold Odgerel
SW203 Lab9
SW203 Lab9
Jargalsaikhan Alyeksandr
Java lecture4
Java lecture4
Onobold Odgerel
Sw203 Lecture3 Advanced Java Program
Sw203 Lecture3 Advanced Java Program
Jargalsaikhan Alyeksandr
CS203 Лекц02 Oop
CS203 Лекц02 Oop
Jargalsaikhan Alyeksandr
Pl lecture7
Pl lecture7
ganzorigb
Java lecture3
Java lecture3
Onobold Odgerel
Lecture3 4
Lecture3 4
ganzorigb
Java lecture2
Java lecture2
Onobold Odgerel
Sw203 Lecture8 Interface
Sw203 Lecture8 Interface
Jargalsaikhan Alyeksandr
Lec04
Lec04
ganzorigb
Gosexem asuult 09
Gosexem asuult 09
dorjoooo
Cs203 lab8
Cs203 lab8
Jargalsaikhan Alyeksandr
Pl lecture6
Pl lecture6
ganzorigb
Lecture4
Lecture4
orgil
Ood lesson12.1 ---------
Ood lesson12.1 ---------
International Ulaanbaatar University
Java programchlal s.uuganbayr
Java programchlal s.uuganbayr
E-Gazarchin Online University
Pl lecture8
Pl lecture8
ganzorigb
Sw203lab8
Sw203lab8
Jargalsaikhan Alyeksandr
Video lab1-web
Video lab1-web
bsuren_bn
Mais conteúdo relacionado
Mais procurados
Sw203 Lecture6 Inheritance
Sw203 Lecture6 Inheritance
Jargalsaikhan Alyeksandr
Cs203 lecture13 composition
Cs203 lecture13 composition
Jargalsaikhan Alyeksandr
Java lecture5
Java lecture5
Onobold Odgerel
SW203 Lab9
SW203 Lab9
Jargalsaikhan Alyeksandr
Java lecture4
Java lecture4
Onobold Odgerel
Sw203 Lecture3 Advanced Java Program
Sw203 Lecture3 Advanced Java Program
Jargalsaikhan Alyeksandr
CS203 Лекц02 Oop
CS203 Лекц02 Oop
Jargalsaikhan Alyeksandr
Pl lecture7
Pl lecture7
ganzorigb
Java lecture3
Java lecture3
Onobold Odgerel
Lecture3 4
Lecture3 4
ganzorigb
Java lecture2
Java lecture2
Onobold Odgerel
Sw203 Lecture8 Interface
Sw203 Lecture8 Interface
Jargalsaikhan Alyeksandr
Lec04
Lec04
ganzorigb
Gosexem asuult 09
Gosexem asuult 09
dorjoooo
Cs203 lab8
Cs203 lab8
Jargalsaikhan Alyeksandr
Pl lecture6
Pl lecture6
ganzorigb
Lecture4
Lecture4
orgil
Ood lesson12.1 ---------
Ood lesson12.1 ---------
International Ulaanbaatar University
Java programchlal s.uuganbayr
Java programchlal s.uuganbayr
E-Gazarchin Online University
Pl lecture8
Pl lecture8
ganzorigb
Mais procurados
(20)
Sw203 Lecture6 Inheritance
Sw203 Lecture6 Inheritance
Cs203 lecture13 composition
Cs203 lecture13 composition
Java lecture5
Java lecture5
SW203 Lab9
SW203 Lab9
Java lecture4
Java lecture4
Sw203 Lecture3 Advanced Java Program
Sw203 Lecture3 Advanced Java Program
CS203 Лекц02 Oop
CS203 Лекц02 Oop
Pl lecture7
Pl lecture7
Java lecture3
Java lecture3
Lecture3 4
Lecture3 4
Java lecture2
Java lecture2
Sw203 Lecture8 Interface
Sw203 Lecture8 Interface
Lec04
Lec04
Gosexem asuult 09
Gosexem asuult 09
Cs203 lab8
Cs203 lab8
Pl lecture6
Pl lecture6
Lecture4
Lecture4
Ood lesson12.1 ---------
Ood lesson12.1 ---------
Java programchlal s.uuganbayr
Java programchlal s.uuganbayr
Pl lecture8
Pl lecture8
Destaque
Sw203lab8
Sw203lab8
Jargalsaikhan Alyeksandr
Video lab1-web
Video lab1-web
bsuren_bn
SW203 Lab10
SW203 Lab10
Jargalsaikhan Alyeksandr
Lab5
Lab5
Nergui Batjargal
Лабораторийн ажил № 1
Лабораторийн ажил № 1
bsuren_bn
Lab6 db
Lab6 db
Nergui Batjargal
Lab10 11
Lab10 11
Nergui Batjargal
Lab7
Lab7
Nergui Batjargal
Sw203lab5
Sw203lab5
Jargalsaikhan Alyeksandr
Sw203lab6
Sw203lab6
Jargalsaikhan Alyeksandr
Sw203 Lab7
Sw203 Lab7
Jargalsaikhan Alyeksandr
Laboratory 14
Laboratory 14
Nergui Batjargal
Lab 12
Lab 12
Nergui Batjargal
Програм ба зүйрлэл
Програм ба зүйрлэл
Золбаяр Баярсайхан
Лабораторийн ажил № 2
Лабораторийн ажил № 2
bsuren_bn
It101-lab9
It101-lab9
Nergui Batjargal
S W203 Lecture8 Interface
S W203 Lecture8 Interface
Jargalsaikhan Alyeksandr
lab8
lab8
bsuren_bn
U.it101 lab13
U.it101 lab13
Nergui Batjargal
Java лаб13
Java лаб13
Enkhee99
Destaque
(20)
Sw203lab8
Sw203lab8
Video lab1-web
Video lab1-web
SW203 Lab10
SW203 Lab10
Lab5
Lab5
Лабораторийн ажил № 1
Лабораторийн ажил № 1
Lab6 db
Lab6 db
Lab10 11
Lab10 11
Lab7
Lab7
Sw203lab5
Sw203lab5
Sw203lab6
Sw203lab6
Sw203 Lab7
Sw203 Lab7
Laboratory 14
Laboratory 14
Lab 12
Lab 12
Програм ба зүйрлэл
Програм ба зүйрлэл
Лабораторийн ажил № 2
Лабораторийн ажил № 2
It101-lab9
It101-lab9
S W203 Lecture8 Interface
S W203 Lecture8 Interface
lab8
lab8
U.it101 lab13
U.it101 lab13
Java лаб13
Java лаб13
Semelhante a Cs203 lecture 14 reflection
Java lecture4
Java lecture4
Onobold Odgerel
Lecture5 6
Lecture5 6
ganzorigb
3
3
International Ulaanbaatar University
33
33
International Ulaanbaatar University
Lab 16
Lab 16
Ganbaatar ch
Lecture hibernate
Lecture hibernate
ganzorigb
Ood lesson6 class
Ood lesson6 class
International Ulaanbaatar University
Lecture
Lecture
Lucy Mep
Java script xэрэглээ
Java script xэрэглээ
Singleton
Semelhante a Cs203 lecture 14 reflection
(9)
Java lecture4
Java lecture4
Lecture5 6
Lecture5 6
3
3
33
33
Lab 16
Lab 16
Lecture hibernate
Lecture hibernate
Ood lesson6 class
Ood lesson6 class
Lecture
Lecture
Java script xэрэглээ
Java script xэрэглээ
Cs203 lecture 14 reflection
1.
Объект хандлагат програмчлалын
хэл Java Хичээл: CS203 Багш:Д.Энхжаргал Mongolia University of Science & Technology Reflection
2.
3.
4.
Object класс Асуулт:
Энд алдаа заах уу? Хариулт: Алдаа заахгүй. Адилхан
5.
Object класс Object
класс нь Java хэлний бүх классуудын өвөг эцэг класс юм. Бид ямар нэг класс тодорхойлохдоо extends түлхүүр үг ашиглан ямар нэг классаас удамшуулсан гэсэн бичиглэлийг хийж өгсөн өгөөгүй байсан ч тухайн класс нь Object классаас далдуур удамшиж байдаг. Иймд аливаа классд Object классын гишүүн функцууд удамшдаг. Тухайлбал: Thread-тэй ажилдаг wait(), notify(), notifyAll()-ээс гадна equals(), toString() функцуудыг нэрлэж болно. Object классын toString() функц нь тухайн объектын классын нэрийг хэвлэх үүрэгтэй нилээд түгээмэл ашиглагддаг функц бөгөөд Java-ийн ихэнхи классууд нь энэ функыг дахин тодорхойлдог (overrides).
6.
Reflection Java
програмчлалын хэл нь динамик програмчлалын хэд хэдэн боломжуудыг өөртөө агуулсан хэл юм. Тэдгээрээс өөр хоорондоо харилцан хамаарал бүхий reflection ба interspection гэсэн 2 чухал ойлголт байдаг. Reflectionхэмээх ойлголт нь програмлчлалд классыг биелэлтийн үед нь динамикаар холбож, тухайн классын гишүүн өгөгдөл, гишүүн функцууд болон байгуулагч функцуудтай динамикаар харьцах боломжийг бүрдүүлдэг. Өөрөөр хэлбэл reflection хэмээх ойлголт нь биелэлтийн өмнө сайн мэдэхгүй класстайгаа харьцан ажиллах боломжийг бүрдүүлдэг. Introspectionгэдгийг “өөрлүүгээ харах” (look inside) гэж утгачилан орчуулна. Энэ нь програм нь өөр рүүгээ эргэн харж өөрт тодорхойлогдсон класс, түүний эх класс болон түүний гишүүд, байгуулагч функцуудын талаар дэлгэрэнгүй мэдээлэл авах боломжийг бүрдүүлж өгдөг. Дээрх 2 ойлголт нь хоорондоо салшгүй холбоо хамааралтай ойлголтууд юм. Тэдгээр нь хамтдаа нийлсэнээр динамик програмчлалын бодит хэрэгжилт болно. Энэ нь заримдаа Мета-програмчлал ч гэж нэрлэгддэг. Мета-програмчлал нь аливаа нэг програм нь биелэлтийн ( runtime) явцадөөр бусад програмуудыг (эсвэл өөрийгөө ) удирдан зохион байгуулан, тэдгээрийн зохицон ажлуулах боломжийг дэмждэг. Мөнтүүнчлэн introspection нь полиморфизм хэмээх ойлголтыг өвөрмөц аргаар (ОХ бус аргаар) хэрэгжүүлдэг.
7.
java.lang.reflectпакет дахь классыг
импортлох Дэлгэрэнгүй харахыг хүссэн класс/интерфейсийнхээ нэрийг програмд 0-р аргумент болгон дамжуулах Класс/интерфейсийн тодорхойлогч public class Student {…} эсвэл public interface Cafe {…} InterfaceCafeextends University{ …} эсвэл public class Student extends Person{ …} InterfaceCafe extendsUniversity{ …} эсвэл public class Student extends Person{ …} print_method_or_constructor() гэсэн статик функцын тусламжтай байгуулагч функцуудын мэдээлэл харах print_field() гэсэн статик функцын тусламжтай гишүүн өгөгдлийн талаарх мэдээлэл харах print_method_or_constructor() гэсэн статик функцын тусламжтайгишүүн функцын талаарх мэдээлэл харах
8.
9.
getModifiers();-Тухайн класс/интерфейсийн хандалтыг
тодорхойлогчийг унших
10.
getName();-Тухайн класс/интерфейсийн нэрийг
унших
11.
getSuperclass(); - Тухайн
класс/интерфейсийн эх классыг буцаах
12.
getInterfaces();- Тухайн класс/
интерфейстэй холбогдсон интерфейсүүдийг буцаах
13.
getDeclaredConctructors();-Тухайн классд тодорхойлогдсон
байгуулагч функцуудыг буцаах
14.
getDeclaredFileds();-Тухайн классд тодорхойлогдсон
гишүүн өгөгдлүүдийг буцаах
15.
16.
17.
getType();-Тухайн гишүүн өгөгдлийн
төрлийг буцаах
18.
19.
getParameterTypes();-Тухайн гишүүн функцын
парамет-рүүдийн төрлүүдийг буцаах
20.
21.
ҮР ДҮН:
ShowClass.java Reflection of Student class
22.
ҮР ДҮН: ShowClass.java
Reflection of University interface
23.
24.
25.
Reflection хэмээх ойлголтын
тусламжтай бид тэдгээр асуудлыг хялбар аргаар шийдэж болно. Reflection нь биднийг танил бус классуудтайгаа ажиллах боломжийг бүрдүүлэх бөгөөд кодын өөрчлөлтийг төвөггүйхэн хийх боломжтой болно. public class ReflectionTestClass1 { public static void main(String[] args) throws Exception { ReflectionTestClass1 test = new ReflectionTestClass1(); test.createSchool(); } private void createSchool() throws Exception { Properties prop = new Properties(); prop.load(this.getClass().getResourceAsStream("school.properties")); Object object = Class.forName("csms.sw203.school.School").newInstance(); Enumeration keys = prop.keys(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); String value = prop.getProperty(key); String methodName = "set" + key.substring(0, 1).toUpperCase() + key.substring(1); Method method = object.getClass().getMethod(methodName, new Class[]{String.class}); method.invoke(object, new Object[]{value}); } System.out.println(object); } } Шинэ объектыг динамикаар үүсгэх String-ээс класс үүсгэх Гишүүн функцыг динамикаар тодорхойлох Функцыг динамикаар холбох Жишээ: Reflection
26.
createSchool()фунцыг дэлгэрэнгүй авч
үзье. Дээрх 2 мөр нь CLASSPATH –аас “school.properties” текст файлыг ачаалдаг. Properties гэдэг нь Java класс юм. Түүнийг “properties” нэртэй текст файлд хадгалах бөгөөд дараах форматтай. name=value Энэхүү Properties класс нь “names” болон “values”-ийг тодорхойлох функцээр хангагдсан. this.getClass().getResourceAsStream("school.properties") гэсэн мөрөнд тухайн идэвхитэй замаас School.properties файлын агуулгыг унших Дээрх мөр нь reflection-той холбоотой 2 онцлогийг ашиглана.dynamic class loadingбаdynamic instantiation. Class.forName("csms.sw203.school.School") мөр нь JVM-д “csms.sw203.school” нэртэй пакетаас "School“ нэртэй классыг хайж олоод санах ойд ачааллах үүрэг өгнө. Үр дүнд нь динамкаар ачаалагдсан классын объектыг буцааана. Properties prop = new Properties(); prop.load(this.getClass().getResourceAsStream("school.properties")); Object object = Class.forName("csms.sw203.school.School").newInstance(); Жишээ: Reflection
27.
Дээрх мөрөнд объектыг
динамикаар үүсгэж байна. Бид Properties файлаас хүссэн утгаа хайж олохын тулд түлхүүр (key) ашиглах шаардлагатай. Энэ түлхүүр нь Properties файл дахь name хэсэг юм. Object object = Class.forName("csms.sw203.school.School").newInstance(); Enumeration keys = prop.keys(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); String value = prop.getProperty(key); ... ... } Жишээ: Reflection
28.
Дээр schoool.properties файлын
агуулгыг үзүүлсэн байна. property бүрт харгалзах setter функцыг School классд тодорхойлсон. Жишээ нь. name setName() address setAddress() Давталтын 3 мөрөнд property key-д харгалзах функцын нэрийг гаргаж авч байна 4 мөрөнд тухайн классаас тухайн нэрт харгалзах функцын нэрийг динамикаар тодорхойлж байна 5 мөрөнд уг функцыг динамикаар холбож ажлуулж байна name=KTMC address=Sansar, Ulaanbaator, Mongolian Жишээ: Reflection Enumeration keys = prop.keys(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); String value = prop.getProperty(key); String methodName = "set" + key.substring(0, 1).toUpperCase() + key.substring(1); Method method = object.getClass().getMethod(methodName, new Class[]{String.class}); method.invoke(object, new Object[]{value}); }
29.
Давталт дахь сүүлчийн
2 мөрөнд анхаарлаа хандуулъя Функц гэдэгт тухайн функцын нэрээс гадна параметрүүдийг хамтад нь авч үздэг. Хэдийгээр функцын нэр нь адил боловч параметрийн төрлөөрөө ялгаатай бол харгалзах функцыг цааш хайх шаардлага гарна. Enumeration keys = prop.keys(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); String value = prop.getProperty(key); String methodName = "set" + key.substring(0, 1).toUpperCase() + key.substring(1); Method method = object.getClass().getMethod(methodName, new Class[]{String.class}); method.invoke(object, new Object[]{value}); } Жишээ: Reflection