Saturday, February 19, 2011

Java points, object, class-n талаар


Үүнд field хариулна харин мethod бол oбъектын юу хийхийг заана.
class TwoDPoint {
double x;
double y;
}
Энэ class-г compile хийхийн тулд үүнийгээ TwoDPoint.java файлд хадгална. Дараа нь:
$ javac TwoDPoint.java
Үүний үр дүнд юу үүсэх вэ? Энэ бүтэн програм мөн үү? Энэ ажиллах уу?

Oбъектууд
Объект гэж юу вэ?
Constructor бүхий new түлхүүр үгийн тусламжтайгаар объект үүсгэнэ. Жишээ нь, дараах програм TwoDPoint oбъектийг үүсгэх ба field-г нь хэвлэнэ.
class OriginPrinter {
public static void main(String[] args) {
TwoDPoint origin; // only declares, does not allocate
// The constructor allocates and usually initializes the object
origin = new TwoDPoint();
// set the fields
origin.x = 0.0;
origin.y = 0.0;
// print the two-d point
System.out.println(
"The origin is at " + origin.x + ", " + origin.y);
} // end main
} // end OriginPrinter
. бол member access separator.
new орсон бол объектийг заавал хуваарилах шаардлагатай болдог. Энэ class-г compile хийхийн тулд OriginPrinter.java нэрээр TwoDPoint.java-тай 1 директорт хадгална. 
$ javac OriginPrinter.java
Үүний үр дүнд юу үүсэх вэ? Энэ бүтэн програм мөн үү? Энэ ажиллах уу?

Олон объектууд
Ерөнхийдөө ямар нэг class-н хувьд нэгээс олон объект байдаг. Reference хувьсагчуудыг ижил class дах өөр өөр объектуудыг ялгахын тэлд хэрэглэдэг.
Жишээ: Доорх программ 2 ширхэг two-d point объектийг үүсгэж, тэдгээрийн field-үүдийг хэвлэнэ.
class TwoPointPrinter {
public static void main(String[] args) {
TwoDPoint origin; // only declares, does not allocate
TwoDPoint one; // only declares, does not allocate
// The constructor allocates and usually initializes the object
origin = new TwoDPoint();
one = new TwoDPoint();
// set the fields
origin.x = 0.0;
origin.y = 0.0;
one.x = 1.0;
one.y = 0.0;
// print the 2D points
System.out.println(
"The origin is at " + origin.x + ", " + origin.y);
System.out.println("One is at " + one.x + ", " + one.y);
} // end main
} // end TwoPointPrinter
one болон origin бол 2 өөр point объектийг зааж байгаа 2 өөр reference хувьсагч юм. Дээрх жишээний x, y шиг хувьсагчийг class- ын гишүүнээр таних нь хангалтгүй, class-ын аль объектэд хандаж байгаагаа зааж өгөх хэрэгтэй. 2 өөр reference хувьсагч ижил объектийг заах боломжтой. Объектийг ямар нэг reference хувьсагч хэрэглэхгүй болсон үед уг объект garbage collection руу илгээгдэнэ. Жишээлбэл, дараах программ 2 TwoDPoint reference хувьсагчийг
зарлан, 1 two-d point объектийг үүсгэж, уг объектийг 2 хувьсагчид оноож өгдөг. Энэ үед уг 2 хувьсагч тэнцүү байна.
class EqualPointPrinter {
public static void main(String[] args) {
TwoDPoint origin1; // only declares, does not allocate
TwoDPoint origin2; // only declares, does not allocate
// The constructor allocates and usually initializes the object
origin1 = new TwoDPoint();
origin2 = origin1;
// set the fields
origin1.x = 0.0;
origin1.y = 0.0;
// print
System.out.println(
"origin1 is at " + origin1.x + ", " + origin1.y);
System.out.println(
"origin2 is at " + origin2.x + ", " + origin2.y);
} // end main
} // end EqualPointPrinter
origin1, origin2 бол 1 ижил point объектд хамаарах 2 өөр reference хувьсагчууд юм.

Static Field-үүд
Static эсвэл class field-үүд объект-д биш тодорхой 1 class-т хамаардаг.
class Point {
double x;
double y;
static double xorigin = 0.0;
static double yorigin = 0.0;
}
System.out.println("The origin is at (" + Point.xorigin + ", " + Point.yorigin + ")");

3 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. This comment has been removed by the author.

    ReplyDelete
  3. Very nice article! I'm Preeti, I write for educational blogs. I make a collection of wonderful educational blogs from where I could take inspiration for writing. This article really inspires me though it is a little different from my domain but nonetheless it is a good writing. I sometime write for a education site blogs
    https://www.clearexam.ac.in
    Let me know your thoughts if I could contribute to your blog too.

    ReplyDelete