SlideShare uma empresa Scribd logo
1 de 55
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 += "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();
Програмчлалын хэл Улаанбаатар Их Сургууль 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/1949
Date 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 += "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();
Програмчлалын хэл Улаанбаатар Их Сургууль 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 += "nnEmployees 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 Baker
Employee constructor: Bob Jones
Employee finalizer: Susan Baker; count = 1
Employee 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 он
Програмчлалын хэл

Mais conteúdo relacionado

Mais procurados (19)

Lecture3 4
Lecture3 4Lecture3 4
Lecture3 4
 
Java lecture2
Java lecture2Java lecture2
Java lecture2
 
Sw203 Lecture10 Polymorphism
Sw203 Lecture10 PolymorphismSw203 Lecture10 Polymorphism
Sw203 Lecture10 Polymorphism
 
Лаборатор-3
Лаборатор-3Лаборатор-3
Лаборатор-3
 
SW203 Lab9
SW203  Lab9SW203  Lab9
SW203 Lab9
 
Pl lecture3
Pl lecture3Pl lecture3
Pl lecture3
 
Лабораторийн ажил № 1
Лабораторийн ажил № 1Лабораторийн ажил № 1
Лабораторийн ажил № 1
 
Лабораторийн ажил № 2
Лабораторийн ажил № 2Лабораторийн ажил № 2
Лабораторийн ажил № 2
 
Лекц-3
Лекц-3Лекц-3
Лекц-3
 
Cs203 lecture 14 reflection
Cs203 lecture 14  reflectionCs203 lecture 14  reflection
Cs203 lecture 14 reflection
 
lab8
lab8lab8
lab8
 
Sw203 Lecture9 Encapsulation
Sw203 Lecture9  EncapsulationSw203 Lecture9  Encapsulation
Sw203 Lecture9 Encapsulation
 
Lecture
LectureLecture
Lecture
 
Sw203 Lecture8 Interface
Sw203 Lecture8 InterfaceSw203 Lecture8 Interface
Sw203 Lecture8 Interface
 
Sw203 Lecture4 Class Object
Sw203 Lecture4  Class ObjectSw203 Lecture4  Class Object
Sw203 Lecture4 Class Object
 
Java laboratoriin udirdamj 2
 Java laboratoriin udirdamj 2 Java laboratoriin udirdamj 2
Java laboratoriin udirdamj 2
 
Sw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess ModifiersSw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess Modifiers
 
Cs203 lecture13 composition
Cs203 lecture13 compositionCs203 lecture13 composition
Cs203 lecture13 composition
 
Sw203 Lecture12 Composition
Sw203 Lecture12 CompositionSw203 Lecture12 Composition
Sw203 Lecture12 Composition
 

Destaque

Lecture hibernate
Lecture hibernateLecture hibernate
Lecture hibernateganzorigb
 
Lecture data base programming part3
Lecture data base programming part3Lecture data base programming part3
Lecture data base programming part3ganzorigb
 
Lec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsLec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsTuruu Tsogt
 

Destaque (8)

Pl lecture5
Pl lecture5Pl lecture5
Pl lecture5
 
Pl lecture8
Pl lecture8Pl lecture8
Pl lecture8
 
Pl lecture4
Pl lecture4Pl lecture4
Pl lecture4
 
Pl lecture2
Pl lecture2Pl lecture2
Pl lecture2
 
Lecture hibernate
Lecture hibernateLecture hibernate
Lecture hibernate
 
Lecture data base programming part3
Lecture data base programming part3Lecture data base programming part3
Lecture data base programming part3
 
Pl lecture1
Pl lecture1Pl lecture1
Pl lecture1
 
Lec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsLec4 хereglegchiinpunkts
Lec4 хereglegchiinpunkts
 

Semelhante a Pl lecture8

Semelhante a Pl lecture8 (7)

001cclass 120926194905-phpapp02
001cclass 120926194905-phpapp02001cclass 120926194905-phpapp02
001cclass 120926194905-phpapp02
 
Video lab1-web
Video lab1-webVideo lab1-web
Video lab1-web
 
Dsi lec5
Dsi lec5Dsi lec5
Dsi lec5
 
U.cs101 лаборатори 8
U.cs101 лаборатори 8U.cs101 лаборатори 8
U.cs101 лаборатори 8
 
Java lecture4
Java lecture4Java lecture4
Java lecture4
 
Лекц №13
Лекц №13Лекц №13
Лекц №13
 
Lecture4
Lecture4Lecture4
Lecture4
 

Mais de ganzorigb

Lecture network programming
Lecture network programmingLecture network programming
Lecture network programmingganzorigb
 
Lecture tread
Lecture treadLecture tread
Lecture treadganzorigb
 
Lecture file man prog
Lecture file man progLecture file man prog
Lecture file man progganzorigb
 
Lecture file and folder working
Lecture file and folder workingLecture file and folder working
Lecture file and folder workingganzorigb
 
Lecture data base programming part2
Lecture data base programming part2Lecture data base programming part2
Lecture data base programming part2ganzorigb
 
Lecture data base programming part1
Lecture data base programming part1Lecture data base programming part1
Lecture data base programming part1ganzorigb
 
Lekts presentation10
Lekts presentation10Lekts presentation10
Lekts presentation10ganzorigb
 
Lekts presentation12
Lekts presentation12Lekts presentation12
Lekts presentation12ganzorigb
 
Lekts presentation9
Lekts presentation9Lekts presentation9
Lekts presentation9ganzorigb
 
Lekts presentation8
Lekts presentation8Lekts presentation8
Lekts presentation8ganzorigb
 

Mais de ganzorigb (18)

Lecture 1 2
Lecture 1 2Lecture 1 2
Lecture 1 2
 
Lecture network programming
Lecture network programmingLecture network programming
Lecture network programming
 
Lecture tread
Lecture treadLecture tread
Lecture tread
 
Lecture file man prog
Lecture file man progLecture file man prog
Lecture file man prog
 
Lecture file and folder working
Lecture file and folder workingLecture file and folder working
Lecture file and folder working
 
Lecture data base programming part2
Lecture data base programming part2Lecture data base programming part2
Lecture data base programming part2
 
Lecture data base programming part1
Lecture data base programming part1Lecture data base programming part1
Lecture data base programming part1
 
Lec03
Lec03Lec03
Lec03
 
PL Lecture4
PL Lecture4PL Lecture4
PL Lecture4
 
PL Lecture3
PL Lecture3PL Lecture3
PL Lecture3
 
PL Lecture2
PL Lecture2PL Lecture2
PL Lecture2
 
PL Lecture1
PL Lecture1PL Lecture1
PL Lecture1
 
Lecture2
Lecture2Lecture2
Lecture2
 
Lecture1
Lecture1Lecture1
Lecture1
 
Lekts presentation10
Lekts presentation10Lekts presentation10
Lekts presentation10
 
Lekts presentation12
Lekts presentation12Lekts presentation12
Lekts presentation12
 
Lekts presentation9
Lekts presentation9Lekts presentation9
Lekts presentation9
 
Lekts presentation8
Lekts presentation8Lekts presentation8
Lekts presentation8
 

Pl lecture8

  • 1. L o g o Програмчлалын хэл Олон Улсын Улаанбаатар Их Сургууль 2015 он Класс, функцын тухай багш Б.Ганзориг
  • 2. L o g o Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он Агуулга Устгагч функцын тухай3 Устгагч функцын хэрэглээ4 1 2 Статик хувьсагч5 Статик хувьсагчийн хэрэглээ6 Класс дахь функцын тухай Класс дахь функцын хэрэглээ
  • 3. L o g o Классын функцүүд Классын функцүүд нь public, private, protected гэсэн тодорхойлогчтой байдаг. Хандах байдал нь адил. Хувьсагч болон функцүүдэд ингэж хандах эрхийг тавьж өгснөөр програм өндөр зохион байгуулалттай болдог. • Protected void add() (Тайлбар: хэн дуртай нь хаанаас ч хамаагүй хандаад байвал програм алдаатай болох боломж ихэсдэг) Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 4. L o g o Жишээ Time1 ба TimeTest1 классуудыг хийнэ. Public классууд нь тусдаа файлд байх ёстой. Time1 класс нь өөрөө бие даан ажиллахгүй. • Main функцгүй TimeTest1 класс нь (main функцтэй) Time1 классын обьектийг үүсгэн ашиглана. Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 5. 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 хувьсагчдад аргументаар орж ирсэн утгуудыг олгоно.
  • 6. 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 он Эдгээр функцүүд нь цаг, минут, секундийг янз янзын форматаар үзүүлнэ.
  • 7. 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 += "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(); Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он Time1 классын time обьектийг үүсгэж байна. =new Time1 мөр нь Time1 классын байгуулагчийг дуудаж байна. TimeTest1 классаас Time1 классын public функцүүдийг ашиглаж байна.
  • 8. L o g o Жишээ JOptionPane.showMessageDialog( null, output, "Testing Class Time1", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } // end main } // end class TimeTest1 Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 9. 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 он
  • 10. 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 он
  • 11. 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 хувьсагчдыг зарлаж байна.
  • 12. 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 функцийг хоёр янзаар дуудаж байна. Хоёулаа адилхан юм.
  • 13. L o g o Функц дахин тодорхойлох Класс дотор ижил нэртэй функцүүд байж болдог. Ийм функцүүд нь аргументаараа ялгагддаг. Ийм функцүүдийг дахин тодорхойлогдсон (overloaded) функцүүд гэдэг. Ижил нэртэй ижил аргументтай функцүүд байж болохгүй. Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 14. 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 аргументтай дахин тодорхойлогдсон байгуулагч функц
  • 15. 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 классын обьектийг аргументаараа хүлээж авдаг дөрөвдэх байгуулагч.
  • 16. 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 он
  • 17. 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 он
  • 18. 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 классын обьектийг үүсгэж байна.
  • 19. 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 он
  • 20. L o g o Үр дүн Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 21. L o g o Get, set функцүүд Хандалтын функцүүд (“get” функц)  Public функцүүд байдаг.  Private хувьсагчийн утгыг авах боломжийг олгодог. Өөрчлөгч функцүүд (“set” функц)  Public функцүүд байдаг.  Private хувьсагчийн утгыг өөрчлөх боломжийг олгодог. Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 22. 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 хувьсагчдад бусад классын обьектуудаас шууд хандах боломжгүй.
  • 23. 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 өгөгдлийг өөрчлөх боломжтой болно.
  • 24. 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 хувьсагчийн утгыг харах боломжтой болно.
  • 25. 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 он
  • 26. 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 он
  • 27. 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 нь хэрэглэгчид цагийг өөрчлөх боломж олгоно.
  • 28. 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 ашиглая.
  • 29. 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 он
  • 30. 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 он
  • 31. 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 функцүүдийг ашиглаж байна.
  • 32. 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 функцүүдийг ашиглаж байна.
  • 33. 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 он
  • 34. 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 функцүүдийг ашиглаж байна.
  • 35. L o g o Үр дүн Жава програмчлал Улаанбаатар Их Сургууль 2013 он
  • 36. L o g o Үр дүн Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 37. L o g o Үр дүн Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 38. L o g o Агуулалт Composition Нэг класс өөр классын обьектийг зарлалтандаа ашиглаж болно.  Энэхүү обьект нь уг классын хувьсагчтай адилхан болдог. Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 39. 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 он
  • 40. 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 он
  • 41. 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 он
  • 42. 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 он
  • 43. 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/1949 Date object constructor for date 3/12/1988
  • 44. L o g o Устгагч функц Finalizer Java нь үйл ажиллагаагаа дуусгасан обьектуудыг автоматаар олж санах ойгоос чөлөөлдөг. • Garbage collection (хог цуглуулалт) Обьект санах ойгоос чөлөөлөгдөхөд түүний Finalize функц нь дуудагддаг. • Санах ойг системд буцааж өгнө. • java.lang.Object класс дотор байх finalize функцийг ашигладаг. • Аргументгүй • void функц Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 45. L o g o Статик хувьсагч Static түлхүүр үгийг ашиглана.  Классын бүх обьектуудад ижил хэрэглэгддэг өгөгдлийг статик болгож ашигладаг.  Классын бүх обьектууд уг өгөгдлийг хуваан эзэмшинэ.  Хандахдаа КлассНэр.хувьсагчНэр • Math.pi Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 46. 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 гэсэн хувьсагчтай.
  • 47. 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 он
  • 48. 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 он
  • 49. 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 += "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(); Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он EmployeeTest нь Employee-н статик функцийг обьект нь үүсээгүй байхад ч дуудаж чадна.
  • 50. 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 += "nnEmployees 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 Baker Employee constructor: Bob Jones Employee finalizer: Susan Baker; count = 1 Employee finalizer: Bob Jones; count = 0
  • 51. L o g o Үр дүн Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 52. L o g o Даалгавар 1. Лекц дээрх бүх жишээг ажиллуулан тайлбарыг нь монголоор (англи үсгээр галиглаж болно) хий. 2. Доорх жишээг хийнэ:  Классууд: • Хүн класс – Нэр – Нас – Хүйс – .......... • Оюутан класс – Мэргэжил – Анги – ДундажДүн – ............... Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 53. L o g o Даалгавар  Оюутан класс нь Хүн классаас удамшина.  Хэрэглэгчээс оюутны тоо болон оюутан бүрийн мэдээллийг авна.  Оюутнуудыг массивт хийнэ.  Бүх оюутны мэдээллийг харуулдаг функц.  Бүх оюутны дундаж дүнг харуулдаг функц.  Нийт хэдэн оюутан байгааг харуулдаг функц.  Оюутнуудыг дундаж дүнгээр нь эрэмбэлдэг функц. Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 54. L o g o Шинэ үгс Inheritance: Удамшил public: Дурын классын функцээс хандаж болох хувьсагч болон функц. private: Зөвхөн уг классын функцүүд л хандаж болох хувьсагч болон функц. protected: Уг классын болон түүнээс удамшсан бусад классын функцүүдээс хандаж болох хувьсагч болон функц. Garbage collection: Java нь ашиглагдахгүй болсон обьектуудыг санах ойгоос олж түүний finalize функцийг дуудан уг обьектийг санах ойгоос чөлөөлдөг. Энэ процессийг хог цуглуулалт буюу garbage collection гэдэг. Програмчлалын хэл Улаанбаатар Их Сургууль 2013 он
  • 55. L o g o Олон Улсын Улаанбаатар Их Сургууль 2015 он Програмчлалын хэл