12. Logo
Жишээ
Time1 классын time обьектийг
import javax.swing.JOptionPane; үүсгэж байна. =new Time1 мөр
public class TimeTest1 { нь Time1 классын
public static void main( String args[] ) байгуулагчийг дуудаж байна.
{
Time1 time = new Time1(); // calls Time1 constructor
String output = "The initial universal time is: " +
time.toUniversalString() + "nThe initial standard time is: " +
time.toStandardString(); TimeTest1 классаас Time1
time.setTime( 13, 27, 6 ); классын public функцүүдийг
output += "nnUniversal time after setTime is: " + ашиглаж байна.
time.toUniversalString() +
"nStandard time after setTime is: " + time.toStandardString();
time.setTime( 99, 99, 99 );
output += "nnAfter attempting invalid settings: " +
"nUniversal time: " + time.toUniversalString() +
"nStandard time: " + time.toStandardString();
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
13. Logo
Жишээ
JOptionPane.showMessageDialog( null, output,
"Testing Class Time1", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class TimeTest1
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
14. Logo
Жишээ
public class TimeTest2 {
public static void main( String args[] )
{
Time1 time = new Time1();
time.hour = 7; // error: hour is a private instance variable
time.minute = 15; // error: minute is a private instance variable
time.second = 30; // error: second is a private instance variable
}
} // end class TimeTest2
Классын private хувьсагчдад шууд хандах боломжгүй.
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
15. Logo
This
This нь тухайн обьектийг өөрийг нь хэлдэг.
Хэрвээ класст өөрт нь байгаа хувьсагч нь өөр
классаас удамшиж авсан хувьсагчтай ижил нэртэй
байгаа бол this ашиглан миний хувьсагч гэж ялгаж
өгөх байдлаар хэрэглэнэ.
Мөн функцийн аргумент ба классын хувьсагчийг
ялгахад хэрэглэж болно.
public class Test{
String id;
int counter;
public void init()
{
id = “object”; this.id = “object”
this.counter = 0; counter = 0;
}
}
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
16. Logo
Жишээ
import javax.swing.*;
import java.text.DecimalFormat;
public class ThisTest {
public static void main( String args[] )
{
SimpleTime time = new SimpleTime( 12, 30, 19 );
JOptionPane.showMessageDialog( null, time.buildString(),
"Demonstrating the "this" Reference",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // end class ThisTest
class SimpleTime { SimpleTime класст
private int hour; hour, minute, second
хувьсагчдыг зарлаж байна.
private int minute;
private int second;
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
17. Logo
Жишээ
public SimpleTime( int hour, int minute, int second )
{
this.hour = hour; // set "this" object's hour
this.minute = minute; // set "this" object's minute
this.second = second; // set "this" object's second
}
public String buildString()
{
return "this.toStandardString(): " + this.toStandardString() + toStandartString функцийг
хоѐр янзаар дуудаж байна.
"ntoStandardString(): " + toStandardString();
Хоѐулаа адилхан юм.
}
public String toStandardString()
{
DecimalFormat twoDigits = new DecimalFormat( "00" );
return twoDigits.format( this.hour ) + ":" +
twoDigits.format( this.minute ) + ":" +
twoDigits.format( this.second );
}
} // end class SimpleTime
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
19. Logo
Жишээ
import java.text.DecimalFormat;
public class Time2 {
private int hour; // 0 - 23
private int minute; // 0 - 59
private int second; // 0 - 59
// Time2 constructor initializes each instance variable to zero;
// ensures that Time object starts in a consistent state
public Time2() Аргументгүй
{ байгуулагч функц
this( 0, 0, 0 ); // invoke Time2 constructor with three arguments
} Нэг int аргументтай дахин
// Time2 constructor: hour supplied, minute and second defaulted to 0 тодорхойлогдсон
public Time2( int h ) байгуулагч функц
{
this( h, 0, 0 ); // invoke Time2 constructor with three arguments
}
// Time2 constructor: hour and minute supplied, second defaulted to 0 Хоѐр int аргументтай
public Time2( int h, int m ) дахин тодорхойлогдсон
{ байгуулагч функц
this( h, m, 0 ); // invoke Time2 constructor with three arguments
}
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
20. Logo
Жишээ
// Time2 constructor: hour, minute and second supplied
public Time2( int h, int m, int s ) Дахин тодорхойлогдсон
{ гуравдах байгуулагч
setTime( h, m, s ); // invoke setTime to validate time функц. Гурван int
} аргументтай байна.
// Time2 constructor: another Time2 object supplied
Time2 классын обьектийг
public Time2( Time2 time ) аргументаараа хүлээж
{ авдаг дөрөвдэх
// invoke Time2 constructor with three arguments байгуулагч.
this( time.hour, time.minute, time.second );
}
// set a new time value using universal time; perform
// validity checks on data; set invalid values to zero
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
21. Logo
Жишээ
public void setTime( int h, int m, int s )
{
hour = ( ( h >= 0 && h < 24 ) ? h : 0 );
minute = ( ( m >= 0 && m < 60 ) ? m : 0 );
second = ( ( s >= 0 && s < 60 ) ? s : 0 );
}
// convert to String in universal-time format
public String toUniversalString()
{
DecimalFormat twoDigits = new DecimalFormat( "00" );
return twoDigits.format( hour ) + ":" +
twoDigits.format( minute ) + ":" + twoDigits.format( second );
}
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
22. Logo
Жишээ
// convert to String in standard-time format
public String toStandardString()
{
DecimalFormat twoDigits = new DecimalFormat( "00" );
return ( (hour == 12 || hour == 0) ? 12 : hour % 12 ) + ":" +
twoDigits.format( minute ) + ":" + twoDigits.format( second ) +
( hour < 12 ? " AM" : " PM" );
}
} // end class Time2
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
23. Logo
Жишээ
import javax.swing.*;
public class TimeTest3 {
public static void main( String args[] ) Өөр өөр байгуулагч
{ ашиглан Time2 классын
Time2 t1 = new Time2(); // 00:00:00 обьектийг үүсгэж байна.
Time2 t2 = new Time2( 2 ); // 02:00:00
Time2 t3 = new Time2( 21, 34 ); // 21:34:00
Time2 t4 = new Time2( 12, 25, 42 ); // 12:25:42
Time2 t5 = new Time2( 27, 74, 99 ); // 00:00:00
Time2 t6 = new Time2( t4 ); // 12:25:42
String output = "Constructed with: " + "nt1: all arguments defaulted" +
"n " + t1.toUniversalString() + "n " + t1.toStandardString();
output += "nt2: hour specified; minute and second defaulted" +
"n " + t2.toUniversalString() + "n " + t2.toStandardString();
output += "nt3: hour and minute specified; second defaulted" +
"n " + t3.toUniversalString() + "n " + t3.toStandardString();
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
24. Logo
Жишээ
output += "nt4: hour, minute and second specified" +
"n " + t4.toUniversalString() + "n " + t4.toStandardString();
output += "nt5: all invalid values specified" +
"n " + t5.toUniversalString() + "n " + t5.toStandardString();
output += "nt6: Time2 object t4 specified" +
"n " + t6.toUniversalString() + "n " + t6.toStandardString();
JOptionPane.showMessageDialog( null, output,
"Overloaded Constructors", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class TimeTest3
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
25. Logo
Үр дүн
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
26. Logo
Get, set функцүүд
Хандалтын функцүүд (“get” функц)
Public функцүүд байдаг.
Private хувьсагчийн утгыг авах
боломжийг олгодог.
Өөрчлөгч функцүүд (“set” функц)
Public функцүүд байдаг.
Private хувьсагчийн утгыг өөрчлөх
боломжийг олгодог.
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
27. Logo
Жишээ
import java.text.DecimalFormat;
Эдгээр private
public class Time3 {
хувьсагчдад бусад
private int hour; // 0 - 23
классын обьектуудаас
private int minute; // 0 - 59
шууд хандах боломжгүй.
private int second; // 0 - 59
// Time3 constructor initializes each instance variable to zero;
// ensures that Time object starts in a consistent state
public Time3()
{
this( 0, 0, 0 ); // invoke Time3 constructor with three arguments
}
// Time3 constructor: hour supplied, minute and second defaulted to 0
public Time3( int h )
{
this( h, 0, 0 ); // invoke Time3 constructor with three arguments
}
// Time3 constructor: hour and minute supplied, second defaulted to 0
public Time3( int h, int m )
{
this( h, m, 0 ); // invoke Time3 constructor with three arguments
}
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
28. Logo
Жишээ
// Time3 constructor: hour, minute and second supplied
public Time3( int h, int m, int s )
{ setTime( h, m, s ); }
// Time3 constructor: another Time3 object supplied
public Time3( Time3 time )
{ // invoke Time3 constructor with three arguments
this( time.getHour(), time.getMinute(), time.getSecond() );
}
// Set Methods
// set a new time value using universal time; perform
// validity checks on data; set invalid values to zero
public void setTime( int h, int m, int s )
{
setHour( h ); // set the hour Set функцүүдийн ачаар
setMinute( m ); // set the minute private өгөгдлийг өөрчлөх
setSecond( s ); // set the second боломжтой болно.
} // validate and set hour
public void setHour( int h )
{
hour = ( ( h >= 0 && h < 24 ) ? h : 0 );
}
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
29. Logo
Жишээ
// validate and set minute
public void setMinute( int m )
{
minute = ( ( m >= 0 && m < 60 ) ? m : 0 );
} // validate and set second
public void setSecond( int s )
{
second = ( ( s >= 0 && s < 60 ) ? s : 0 );
} // Get Methods
// get hour value
public int getHour()
{
Get функцүүдийг ашиглан private
return hour; хувьсагчийн утгыг харах
} // get minute value боломжтой болно.
public int getMinute()
{
return minute;
}
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
30. Logo
Жишээ
// get second value
public int getSecond()
{
return second;
}
// convert to String in universal-time format
public String toUniversalString()
{
DecimalFormat twoDigits = new DecimalFormat( "00" );
return twoDigits.format( getHour() ) + ":" +
twoDigits.format( getMinute() ) + ":" +
twoDigits.format( getSecond() );
}
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
31. Logo
Жишээ
// convert to String in standard-time format
public String toStandardString()
{
DecimalFormat twoDigits = new DecimalFormat( "00" );
return ( ( getHour() == 12 || getHour() == 0 ) ?
12 : getHour() % 12 ) + ":" + twoDigits.format( getMinute() ) +
":" + twoDigits.format( getSecond() ) +
( getHour() < 12 ? " AM" : " PM" );
}
} // end class Time3
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
32. Logo
Жишээ
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TimeTest4 extends JApplet implements ActionListener {
private Time3 time;
private JLabel hourLabel, minuteLabel, secondLabel;
private JTextIField hourField, minuteField, secondField, displayField;
private JButton tickButton;
// create Time3 object and set up GUI Time3 обьектийг
public void init() зарлаж үүсгэж байна.
{
time = new Time3(); // create Time3 object
// get applet's content pane and change its layout to FlowLayout
Container container = getContentPane();
container.setLayout( new FlowLayout() );
// set up hourLabel and hourField JTextFields нь хэрэглэгчид
hourLabel = new JLabel( "Set Hour" ); цагийг өөрчлөх боломж
hourField = new JTextField( 10 ); олгоно.
container.add( hourLabel );
container.add( hourField );
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
33. Logo
Жишээ
// set up minuteLabel and minuteField
minuteLabel = new JLabel( "Set Minute" ); Минутын утгыг
minuteField = new JTextField( 10 ); өөрчлөхдөө JTextFields
container.add( minuteLabel ); ашиглая.
container.add( minuteField );
// set up secondLabel and secondField
secondLabel = new JLabel( "Set Second" );
secondField = new JTextField( 10 ); Секундын утгыг
container.add( secondLabel ); өөрчлөхдөө JTextFields
container.add( secondField ); ашиглая.
// set up displayField
displayField = new JTextField( 30 );
displayField.setEditable( false );
container.add( displayField );
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
34. Logo
Жишээ
// set up tickButton
tickButton = new JButton( "Add 1 to Second" );
container.add( tickButton );
// register event handlers; this applet is the ActionListener,
// which contains method actionPerformed that will be called to
// handle action events generated by hourField, minuteField,
// secondField and tickButton
hourField.addActionListener( this );
minuteField.addActionListener( this );
secondField.addActionListener( this );
tickButton.addActionListener( this );
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
35. Logo
Жишээ
displayTime(); // update text in displayField and status bar
} // end method init
// event handler for button and textfield events
public void actionPerformed( ActionEvent event )
{
// process tickButton event
if ( event.getSource() == tickButton )
tick();
// process hourField event
else if ( event.getSource() == hourField ) {
time.setHour( Integer.parseInt( event.getActionCommand() ) );
hourField.setText( "" );
}
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
36. Logo
Жишээ
// process minuteField event
else if ( event.getSource() == minuteField ) {
time.setMinute( Integer.parseInt( event.getActionCommand() ) );
minuteField.setText( "" );
}
// process secondField event
else if ( event.getSource() == secondField ) {
time.setSecond( Integer.parseInt( event.getActionCommand() ) );
secondField.setText( "" );
}
TimeTest5 нь Time3-ийн
private хувьсагчдийг
өөрчлөхдөө Time3-н set
функцүүдийг ашиглаж байна.
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
37. Logo
Жишээ
// process minuteField event
else if ( event.getSource() == minuteField ) {
time.setMinute( Integer.parseInt( event.getActionCommand() ) );
minuteField.setText( "" );
TimeTest5 нь Time3-ийн private
} хувьсагчдийг өөрчлөхдөө Time3-н
set функцүүдийг ашиглаж байна.
// process secondField event
else if ( event.getSource() == secondField ) {
time.setSecond( Integer.parseInt( event.getActionCommand() ) );
secondField.setText( "" );
}
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
38. Logo
Жишээ
displayTime(); // update text in displayField and status bar
} // end method actionPerformed
// update displayField and applet container's status bar
public void displayTime()
{
displayField.setText( "Hour: " + time.getHour() + "; Minute: " +
time.getMinute() + "; Second: " + time.getSecond() );
showStatus( "Standard time is: " + time.toStandardString() +
"; Universal time is: " + time.toUniversalString() );
} // end method updateDisplay
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
39. Logo
Жишээ
// add one to second and update hour/minute if necessary
public void tick()
{
time.setSecond( ( time.getSecond() + 1 ) % 60 );
if ( time.getSecond() == 0 ) { TimeTest5 нь Time3-ийн
time.setMinute( ( time.getMinute() + 1 ) % 60 ); private хувьсагчдийг
авахдаа Time3-н get
функцүүдийг ашиглаж
if ( time.getMinute() == 0 ) байна.
time.setHour( ( time.getHour() + 1 ) % 24 );
}
} // end method tick
} // end class TimeTest4
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
40. Logo
Үр дүн
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
41. Logo
Үр дүн
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
42. Logo
Үр дүн
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
43. Logo
Агуулалт Composition
Нэг класс өөр классын обьектийг
зарлалтандаа ашиглаж болно.
Энэхүү обьект нь уг классын хувьсагчтай
адилхан болдог.
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
44. Logo
Жишээ
public class Date {
private int month; // 1-12
private int day; // 1-31 based on month
private int year; // any year
public Date( int theMonth, int theDay, int theYear )
{
month = checkMonth( theMonth ); // validate month
year = theYear; // could validate year
day = checkDay( theDay ); // validate day
System.out.println( "Date object constructor for date " + toDateString() );
} // end Date constructor
// utility method to confirm proper month value
private int checkMonth( int testMonth )
{ if ( testMonth > 0 && testMonth <= 12 ) // validate month
return testMonth;
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
45. Logo
Жишээ
else { // month is invalid
System.out.println( "Invalid month (" + testMonth +
") set to 1." );
return 1; // maintain object in consistent state
}
} // end method checkMonth
// utility method to confirm proper day value based on month and year
private int checkDay( int testDay )
{ int daysPerMonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// check if day in range for month
if ( testDay > 0 && testDay <= daysPerMonth[ month ] )
return testDay;
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
46. Logo
Жишээ
// check for leap year
if ( month == 2 && testDay == 29 && ( year % 400 == 0 ||
( year % 4 == 0 && year % 100 != 0 ) ) )
return testDay;
System.out.println( "Invalid day (" + testDay + ") set to 1." );
return 1; // maintain object in consistent state
} // end method checkDay
// return a String of the form month/day/year
public String toDateString()
{
return month + "/" + day + "/" + year;
}
} // end class Date
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
47. Logo
Жишээ
public class Employee {
private String firstName;
private String lastName;
private Date birthDate;
private Date hireDate;
public Employee( String first, String last, Date dateOfBirth,
Date dateOfHire )
{
firstName = first;
lastName = last;
birthDate = dateOfBirth;
hireDate = dateOfHire;
}
public String toEmployeeString()
{
return lastName + ", " + firstName +
" Hired: " + hireDate.toDateString() +
" Birthday: " + birthDate.toDateString();
}
} // end class Employee
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
48. Logo
Жишээ
import javax.swing.JOptionPane;
public class EmployeeTest {
public static void main( String args[] )
{
Date birth = new Date( 7, 24, 1949 );
Date hire = new Date( 3, 12, 1988 );
Employee employee = new Employee( "Bob", "Jones", birth, hire );
JOptionPane.showMessageDialog( null, employee.toEmployeeString(),
"Testing Class Employee", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // end class EmployeeTest
Date object constructor for date 7/24/1949
Date object constructor for date 3/12/1988
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
51. Logo
Жишээ
public class Employee { Employee классын
обьектууд дундаа нэг
private String firstName;
count гэсэн хувьсагчтай.
private String lastName;
private static int count = 0; // number of objects in memory
// initialize employee, add 1 to static count and
// output String indicating that constructor was called
public Employee( String first, String last )
{
firstName = first;
lastName = last;
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
52. Logo
Жишээ
++count; // increment static count of employees
System.out.println( "Employee constructor: " +
firstName + " " + lastName );
}
// subtract 1 from static count when garbage collector
// calls finalize to clean up object and output String
// indicating that finalize was called
protected void finalize()
{
--count; // decrement static count of employees
System.out.println( "Employee finalizer: " +
firstName + " " + lastName + "; count = " + count );
}
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
53. Logo
Жишээ
// get first name
public String getFirstName()
{
return firstName;
}
// get last name
public String getLastName()
{
return lastName;
}
Статик хувьсагчид
// static method to get static count value
статик функц ашиглан
public static int getCount() хандаж байна.
{
return count;
}
} // end class Employee
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
54. Logo
Жишээ
import javax.swing.*;
public class EmployeeTest {
public static void main( String args[] )
{ // prove that count is 0 before creating Employees
EmployeeTest нь
String output = "Employees before instantiation: " +
Employee-н статик
Employee.getCount(); функцийг обьект нь
// create two Employees; count should be 2 үүсээгүй байхад ч
Employee e1 = new Employee( "Susan", "Baker" ); дуудаж чадна.
Employee e2 = new Employee( "Bob", "Jones" );
// prove that count is 2 after creating two Employees
output += "nnEmployees after instantiation: " + "nvia e1.getCount(): " +
e1.getCount() +
"nvia e2.getCount(): " + e2.getCount() +"nvia Employee.getCount(): " +
Employee.getCount();
// get names of Employees
output += "nnEmployee 1: " + e1.getFirstName() +
" " + e1.getLastName() + "nEmployee 2: " + e2.getFirstName() + " " +
e2.getLastName();
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
55. Logo
Жишээ
// decrement reference count for each Employee object; in this
// example, there is only one reference to each Employee, so these
// statements mark each Employee object for garbage collection
e1 = null; Java-н автомат
e2 = null; garbage collection
механизмийг дуудаж
System.gc(); // suggest call to garbage collector
байна.
// show Employee count after calling garbage collector; count
// displayed may be 0, 1 or 2 based on whether garbage collector
// executes immediately and number of Employee objects collected
output += "nnEmployees after System.gc(): " +
Employee.getCount();
JOptionPane.showMessageDialog( null, output, "Static Members",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} Employee constructor: Susan Baker
Employee constructor: Bob Jones
} // end class EmployeeTest Employee finalizer: Susan Baker; count = 1
Employee finalizer: Bob Jones; count = 0
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
56. Logo
Үр дүн
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он
57. Logo
Даалгавар
1. Лекц дээрх бүх жишээг ажиллуулан
тайлбарыг нь монголоор (англи үсгээр
галиглаж болно) хий.
2. Доорх жишээг хийнэ:
Классууд:
• Хүн класс
– Нэр
– Нас
– Хүйс
– Тоо (статик)
• Оюутан класс
– Мэргэжил
– Анги
– ДундажДүн
Жава програмчлал Улаанбаатар Дээд Сургууль 2011 он