pl lecture8
TRANSCRIPT
L o g o
Програмчлалын хэл
Олон Улсын Улаанбаатар Их Сургууль 2015 он
Класс, функцын тухайбагш Б.Ганзориг
L o g o
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Агуулга
Устгагч функцын тухай3
Устгагч функцын хэрэглээ4
1
2
Статик хувьсагч5
Статик хувьсагчийн хэрэглээ6
Класс дахь функцын тухай
Класс дахь функцын хэрэглээ
L o g o
Классын функцүүд
Классын функцүүд нь public, private, protected гэсэн тодорхойлогчтой байдаг.
Хандах байдал нь адил.Хувьсагч болон функцүүдэд ингэж хандах
эрхийг тавьж өгснөөр програм өндөр зохион байгуулалттай болдог.
• Protected void add()
(Тайлбар: хэн дуртай нь хаанаас ч хамаагүй хандаад байвал програм алдаатай болох боломж ихэсдэг)
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ
Time1 ба TimeTest1 классуудыг хийнэ.Public классууд нь тусдаа файлд байх
ёстой.Time1 класс нь өөрөө бие даан
ажиллахгүй.• Main функцгүй
TimeTest1 класс нь (main функцтэй) Time1 классын обьектийг үүсгэн ашиглана.
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ
import java.text.DecimalFormat;
public class Time1 extends Object {
private int hour; // 0 - 23
private int minute; // 0 - 59
private int second; // 0 - 59
public Time1()
{
setTime( 0, 0, 0 );
}
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 );
}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Time1 класс нь Object классаас удамшиж байна.
Private хувьсагчиддад зөвхөн уг классын функцүүд л хандаж өөрчлөх, утгыг нь харах эрхтэй байдаг
Time1 байгуулагч нь Time1 классын обьектийг үүсгээд setTime функцийг дуудна.
setTime функц нь классын private хувьсагчдад аргументаар орж ирсэн утгуудыг олгоно.
L o g o
Жишээ
public String toUniversalString()
{
DecimalFormat twoDigits = new DecimalFormat( "00" );
return twoDigits.format( hour ) + ":" +
twoDigits.format( minute ) + ":" + twoDigits.format( second );
}
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" );
}
}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Эдгээр функцүүд нь цаг, минут, секундийг янз янзын форматаар үзүүлнэ.
L o g o
Жишээ
import javax.swing.JOptionPane;
public class TimeTest1 {
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();
time.setTime( 13, 27, 6 );
output += "\n\nUniversal time after setTime is: " +
time.toUniversalString() +
"\nStandard time after setTime is: " + time.toStandardString();
time.setTime( 99, 99, 99 );
output += "\n\nAfter attempting invalid settings: " +
"\nUniversal time: " + time.toUniversalString() +
"\nStandard time: " + time.toStandardString();
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Time1 классын time обьектийг үүсгэж байна. =new Time1 мөр нь Time1 классын байгуулагчийг дуудаж байна.
TimeTest1 классаас Time1 классын public функцүүдийг ашиглаж байна.
L o g o
Жишээ
JOptionPane.showMessageDialog( null, output,
"Testing Class Time1", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class TimeTest1
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ
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 хувьсагчдад шууд хандах боломжгүй.
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
This
This нь тухайн обьектийг өөрийг нь хэлдэг. Хэрвээ класст өөрт нь байгаа хувьсагч нь өөр
классаас удамшиж авсан хувьсагчтай ижил нэртэй байгаа бол this ашиглан миний хувьсагч гэж ялгаж өгөх байдлаар хэрэглэнэ.
Мөн функцийн аргумент ба классын хувьсагчийг ялгахад хэрэглэж болно.
public class Test{String id;int counter;public void init(){
id = “object”; \\ this.id = “object”this.counter = 0; \\ counter = 0;
}}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ
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 {
private int hour;
private int minute;
private int second;
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
SimpleTime класст hour, minute, second хувьсагчдыг зарлаж байна.
L o g o
Жишээ
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() +
"\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
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
toStandartString функцийг хоёр янзаар дуудаж байна. Хоёулаа адилхан юм.
L o g o
Функц дахин тодорхойлох
Класс дотор ижил нэртэй функцүүд байж болдог.
Ийм функцүүд нь аргументаараа ялгагддаг.
Ийм функцүүдийг дахин тодорхойлогдсон (overloaded) функцүүд гэдэг.
Ижил нэртэй ижил аргументтай функцүүд байж болохгүй.
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ
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
}
// 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
public Time2( int h, int m )
{
this( h, m, 0 ); // invoke Time2 constructor with three arguments
}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Аргументгүй байгуулагч функц
Нэг int аргументтай дахин тодорхойлогдсон байгуулагч функц
Хоёр int аргументтай дахин тодорхойлогдсон байгуулагч функц
L o g o
Жишээ
// Time2 constructor: hour, minute and second supplied
public Time2( int h, int m, int s )
{
setTime( h, m, s ); // invoke setTime to validate time
}
// Time2 constructor: another Time2 object supplied
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
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Дахин тодорхойлогдсон гуравдах байгуулагч функц. Гурван int аргументтай байна.
Time2 классын обьектийг аргументаараа хүлээж авдаг дөрөвдэх байгуулагч.
L o g o
Жишээ
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 );
}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ
// 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
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ
import javax.swing.*;
public class TimeTest3 {
public static void main( String args[] )
{
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();
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Өөр өөр байгуулагч ашиглан Time2 классын обьектийг үүсгэж байна.
L o g o
Жишээ
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
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Үр дүн
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Get, set функцүүд
Хандалтын функцүүд (“get” функц) Public функцүүд байдаг. Private хувьсагчийн утгыг авах
боломжийг олгодог.Өөрчлөгч функцүүд (“set” функц)
Public функцүүд байдаг. Private хувьсагчийн утгыг өөрчлөх
боломжийг олгодог.
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ
import java.text.DecimalFormat;
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
}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Эдгээр private хувьсагчдад бусад классын обьектуудаас шууд хандах боломжгүй.
L o g o
Жишээ // 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
setMinute( m ); // set the minute
setSecond( s ); // set the second
} // validate and set hour
public void setHour( int h )
{
hour = ( ( h >= 0 && h < 24 ) ? h : 0 );
}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Set функцүүдийн ачаар private өгөгдлийг өөрчлөх боломжтой болно.
L o g o
Жишээ // 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()
{
return hour;
} // get minute value
public int getMinute()
{
return minute;
}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Get функцүүдийг ашиглан private хувьсагчийн утгыг харах боломжтой болно.
L o g o
Жишээ // 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() );
}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ
// 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
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ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
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
hourLabel = new JLabel( "Set Hour" );
hourField = new JTextField( 10 );
container.add( hourLabel );
container.add( hourField );
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Time3 обьектийг зарлаж үүсгэж байна.
JTextFields нь хэрэглэгчид цагийг өөрчлөх боломж олгоно.
L o g o
Жишээ // set up minuteLabel and minuteField
minuteLabel = new JLabel( "Set Minute" );
minuteField = new JTextField( 10 );
container.add( minuteLabel );
container.add( minuteField );
// set up secondLabel and secondField
secondLabel = new JLabel( "Set Second" );
secondField = new JTextField( 10 );
container.add( secondLabel );
container.add( secondField );
// set up displayField
displayField = new JTextField( 30 );
displayField.setEditable( false );
container.add( displayField );
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Минутын утгыг өөрчлөхдөө JTextFields ашиглая.
Секундын утгыг өөрчлөхдөө JTextFields ашиглая.
L o g o
Жишээ // 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 );
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ 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( "" );
}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ// 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( "" );
}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
TimeTest5 нь Time3-ийн private хувьсагчдийг өөрчлөхдөө Time3-н set функцүүдийг ашиглаж байна.
L o g o
Жишээ// 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( "" );
}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
TimeTest5 нь Time3-ийн private хувьсагчдийг өөрчлөхдөө Time3-н set функцүүдийг ашиглаж байна.
L o g o
Жишээ 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
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ // add one to second and update hour/minute if necessary
public void tick()
{
time.setSecond( ( time.getSecond() + 1 ) % 60 );
if ( time.getSecond() == 0 ) {
time.setMinute( ( time.getMinute() + 1 ) % 60 );
if ( time.getMinute() == 0 )
time.setHour( ( time.getHour() + 1 ) % 24 );
}
} // end method tick
} // end class TimeTest4
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
TimeTest5 нь Time3-ийн private хувьсагчдийг авахдаа Time3-н get функцүүдийг ашиглаж байна.
L o g o
Үр дүн
Жава програмчлал Улаанбаатар Их Сургууль 2013 он
L o g o
Үр дүн
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Үр дүн
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Агуулалт Composition
Нэг класс өөр классын обьектийг зарлалтандаа ашиглаж болно. Энэхүү обьект нь уг классын хувьсагчтай
адилхан болдог.
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ
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;
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ
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 он
L o g o
Жишээ
// 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
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ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
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ 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
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Date object constructor for date 7/24/1949Date object constructor for date 3/12/1988
L o g o
Устгагч функц Finalizer
Java нь үйл ажиллагаагаа дуусгасан обьектуудыг автоматаар олж санах ойгоос чөлөөлдөг.• Garbage collection (хог цуглуулалт)
Обьект санах ойгоос чөлөөлөгдөхөд түүний Finalize функц нь дуудагддаг.• Санах ойг системд буцааж өгнө.• java.lang.Object класс дотор байх finalize
функцийг ашигладаг.• Аргументгүй• void функц
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Статик хувьсагч
Static түлхүүр үгийг ашиглана. Классын бүх обьектуудад ижил
хэрэглэгддэг өгөгдлийг статик болгож ашигладаг.
Классын бүх обьектууд уг өгөгдлийг хуваан эзэмшинэ.
Хандахдаа КлассНэр.хувьсагчНэр• Math.pi
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ
public class Employee {
private String firstName;
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;
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Employee классын обьектууд дундаа нэг count гэсэн хувьсагчтай.
L o g o
Жишээ
++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 );
}
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээ // 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
Програмчлалын хэл
Статик хувьсагчид статик функц ашиглан хандаж байна.
Улаанбаатар Их Сургууль 2013 он
L o g o
Жишээimport javax.swing.*;
public class EmployeeTest {
public static void main( String args[] )
{ // prove that count is 0 before creating Employees
String output = "Employees before instantiation: " +
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 += "\n\nEmployees after instantiation: " + "\nvia e1.getCount(): " + e1.getCount() +
"\nvia e2.getCount(): " + e2.getCount() +"\nvia Employee.getCount(): " + Employee.getCount();
// get names of Employees
output += "\n\nEmployee 1: " + e1.getFirstName() +
" " + e1.getLastName() + "\nEmployee 2: " + e2.getFirstName() + " " + e2.getLastName();
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
EmployeeTest нь Employee-н статик функцийг обьект нь үүсээгүй байхад ч дуудаж чадна.
L o g o
Жишээ // 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;
e2 = null;
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 += "\n\nEmployees after System.gc(): " +
Employee.getCount();
JOptionPane.showMessageDialog( null, output, "Static Members", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // end class EmployeeTest
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
Java-н автомат garbage collection механизмийг дуудаж байна.
Employee constructor: Susan BakerEmployee constructor: Bob JonesEmployee finalizer: Susan Baker; count = 1Employee finalizer: Bob Jones; count = 0
L o g o
Үр дүн
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Даалгавар
1. Лекц дээрх бүх жишээг ажиллуулан тайлбарыг нь монголоор (англи үсгээр галиглаж болно) хий.
2. Доорх жишээг хийнэ: Классууд:
• Хүн класс – Нэр– Нас– Хүйс– ..........
• Оюутан класс– Мэргэжил– Анги– ДундажДүн– ...............
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Даалгавар
Оюутан класс нь Хүн классаас удамшина. Хэрэглэгчээс оюутны тоо болон оюутан бүрийн
мэдээллийг авна. Оюутнуудыг массивт хийнэ. Бүх оюутны мэдээллийг харуулдаг функц. Бүх оюутны дундаж дүнг харуулдаг функц. Нийт хэдэн оюутан байгааг харуулдаг функц. Оюутнуудыг дундаж дүнгээр нь эрэмбэлдэг функц.
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Шинэ үгс
Inheritance: Удамшилpublic: Дурын классын функцээс
хандаж болох хувьсагч болон функц.private: Зөвхөн уг классын
функцүүд л хандаж болох хувьсагч болон функц.
protected: Уг классын болон түүнээс удамшсан бусад классын функцүүдээс хандаж болох хувьсагч болон функц.
Garbage collection: Java нь ашиглагдахгүй болсон обьектуудыг санах ойгоос олж түүний finalize функцийг дуудан уг обьектийг санах ойгоос чөлөөлдөг. Энэ процессийг хог цуглуулалт буюу garbage collection гэдэг.
Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
L o g o
Олон Улсын Улаанбаатар Их Сургууль 2015 он
Програмчлалын хэл