ការវាយតម្លៃប្រព័ន្ធ ATM តូច

Java OOP សំណួរ ១៥ ១២០ នាទី

📝 ព័ត៌មានសិស្ស / Student Information

០១
ការគ្រប់គ្រងលំហូរកម្មវិធី
សំណួរ: នៅពេលដែលអ្នកប្រើប្រាស់ជ្រើសរើសជម្រើសទី ៥ (ប្តូរគណនី) នៅក្នុង ATM.java ហើយផ្តល់ធាតុចូលមិនត្រឹមត្រូវ ទង់ isRunning ផ្លាស់ប្តូរទៅជា false

តើអ្វីនឹងកើតឡើងបន្ទាប់? តើកម្មវិធី:
A) ត្រឡប់ទៅអេក្រង់ចូលនៅក្នុង Main.java, ឬ
B) បញ្ចប់ដំណើរការ JVM ទាំងមូល?

ពន្យល់ចម្លើយរបស់អ្នក ដោយវិភាគការហៅមេធីដនិងលំហូរត្រួតពិនិត្យរវាង Main.java និង ATM.java
💡 ជំនួយ: ពិនិត្យមើលរបៀបដែលរង្វង់ while និងរចនាសម្ព័ន្ធមេធីដធ្វើការនៅក្នុងលំហូរកម្មវិធីសំខាន់។
០២
Encapsulation - ការលាក់ទិន្នន័យ
សំណួរ: នៅក្នុង Account.java, variable balance ត្រូវបានកំណត់ជា private

សូមពន្យល់:
A) តើ private មានន័យថាអ្វី?
B) ហេតុអ្វីយើងមិនធ្វើ balance ជា public?
C) តើយើងធ្វើយ៉ាងដូចម្តេចដើម្បីអាន balance ពីខាងក្រៅ class?
💡 ជំនួយ: Encapsulation ការពារទិន្នន័យមិនឱ្យមានការផ្លាស់ប្តូរដោយផ្ទាល់។
០៣
Getter និង Setter Methods
សំណួរ: នៅក្នុង Account.java, យើងមាន getBalance() method។

សូមពន្យល់:
A) តើ Getter method គឺជាអ្វី?
B) តើ Setter method គឺជាអ្វី?
C) សូមសរសេរ Setter method សម្រាប់ accountNumber (ឈ្មោះ method និង parameter)
💡 ជំនួយ: Getter ត្រឡប់តម្លៃ, Setter កំណត់តម្លៃថ្មី។
០៤
Constructor Method
សំណួរ: នៅក្នុង User.java, មាន Constructor ដើម្បីបង្កើត User object។

សូមពន្យល់:
A) តើ Constructor គឺជាអ្វី?
B) តើ Constructor ខុសពី method ធម្មតាយ៉ាងដូចម្តេច?
C) តើយើងហៅ Constructor នៅពេលណា?
💡 ជំនួយ: Constructor មានឈ្មោះដូចគ្នានឹង class និងមិនមាន return type។
០៥
តក្កវិជ្ជាផ្ទៀងផ្ទាត់ធាតុចូល
សំណួរ: នៅក្នុង Account.java, មេធីដ withdraw រួមបញ្ចូលលក្ខខណ្ឌដើម្បីពិនិត្យប្រសិនបើ amount <= balance

សន្មតថានរណាម្នាក់កែប្រែ ATM.java ដើម្បីទទួលយកចំនួនដកប្រាក់អវិជ្ជមាន (ឧទាហរណ៍ បញ្ចូល -500 នៅពេលសួរពីចំនួនដកប្រាក់)។

តើតក្កវិជ្ជាផ្ទៀងផ្ទាត់ដែលមានស្រាប់រារាំងការនេះពីការបង្កើត "កំហុសលុយគ្មានដែនកំណត់" យ៉ាងដូចម្តេច? ចង្អុលបង្ហាញលក្ខខណ្ឌឬការពិនិត្យជាក់លាក់ដែលបញ្ឈប់ការទាស់ទេងនេះ។
💡 ជំនួយ: តាមដានអ្វីដែលកើតឡើងនៅពេលដែលលេខអវិជ្ជមានឆ្លងកាត់តក្កវិជ្ជាដកប្រាក់។ តើការពិនិត្យអ្វីដែលមាន?
០៦
Access Modifiers - កម្រិតចូលប្រើ
សំណួរ: នៅក្នុង Java OOP, យើងមាន access modifiers ដូចជា public, private, និង protected

សូមពន្យល់:
A) តើ public មានន័យថាអ្វី?
B) តើ private មានន័យថាអ្វី?
C) នៅក្នុងប្រព័ន្ធ ATM, ហេតុអ្វី balance គួរជា private?
💡 ជំនួយ: Public = ទាំងអស់អាចចូលប្រើ, Private = មានតែ class ខ្លួនឯងប៉ុណ្ណោះ។
០៧
Inheritance - ការទទួលមរតក
សំណួរ: ស្រមៃថាយើងចង់បង្កើត SavingsAccount និង CheckingAccount ពី Account class។

សូមពន្យល់:
A) តើ Inheritance គឺជាអ្វី?
B) តើ Parent class (Superclass) គឺជាអ្វី?
C) តើ Child class (Subclass) ទទួលបានអ្វីខ្លះពី Parent?
💡 ជំនួយ: ប្រើ keyword extends សម្រាប់ inheritance នៅក្នុង Java។
០៨
Keyword "this" នៅក្នុង Java
សំណួរ: នៅក្នុង Constructor នៃ Account.java, យើងប្រើ keyword this

សូមពន្យល់:
A) តើ this សំដៅលើអ្វី?
B) ហេតុអ្វីយើងប្រើ this.balance = balance;?
C) តើយើងអាចលុប this បានទេ? ហេតុអ្វី?
💡 ជំនួយ: this សំដៅលើ object បច្ចុប្បន្នដែលកំពុងធ្វើការ។
០៩
Method Overloading
សំណួរ: ស្រមៃថាយើងចង់បង្កើត withdraw() method ពីរ - មួយទទួល amount, មួយទៀតទទួល amount និង description។

សូមពន្យល់:
A) តើ Method Overloading គឺជាអ្វី?
B) តើអ្វីខ្លះត្រូវខុសគ្នារវាង methods ដែល overload?
C) សូមសរសេរ method signatures ទាំងពីរ។
💡 ជំនួយ: Overloading = ឈ្មោះដូចគ្នា ប៉ុន្តែ parameters ខុសគ្នា។
១០
Return Types នៃ Methods
សំណួរ: Methods នៅក្នុង Java អាចមាន return types ផ្សេងៗគ្នា ដូចជា void, int, double, boolean, String

សូមពន្យល់:
A) តើ Return type គឺជាអ្វី?
B) តើ void មានន័យថាអ្វី?
C) ប្រសិនបើ getBalance() ត្រឡប់ double, តើយើងប្រើវាយ៉ាងដូចម្តេច?
💡 ជំនួយ: void = មិនត្រឡប់អ្វីទេ, Return type ផ្សេងទៀត = ត្រឡប់តម្លៃ។
១១
Composition - ការផ្សំវត្ថុ
សំណួរ: នៅក្នុងប្រព័ន្ធ ATM, User class មាន ArrayList<Account> ខាងក្នុង។

សូមពន្យល់:
A) តើ Composition គឺជាអ្វី?
B) តើ "User has many Accounts" ជាប្រភេទទំនាក់ទំនងអ្វី?
C) តើ Composition ខុសពី Inheritance យ៉ាងដូចម្តេច?
💡 ជំនួយ: Composition = "has-a" relationship, Inheritance = "is-a" relationship។
១២
Polymorphism - ពហុរូបភាព
សំណួរ: ស្រមៃថា SavingsAccount និង CheckingAccount ទាំងពីរ extend Account។ ទាំងពីរ override method withdraw()

សូមពន្យល់:
A) តើ Polymorphism គឺជាអ្វី?
B) តើ Method Overriding គឺជាអ្វី?
C) តើអត្ថប្រយោជន៍អ្វីនៃ polymorphism ក្នុង OOP?
💡 ជំនួយ: Polymorphism = object ផ្សេងគ្នាឆ្លើយតបតាមវិធីផ្ទាល់ខ្លួន។
១៣
Abstraction - ការលាក់ភាពស្មុគស្មាញ
សំណួរ: នៅពេលប្រើ ATM, អ្នកប្រើគ្រាន់តែចុច "Withdraw" ដោយមិនចាំបាច់ដឹងលម្អិតពីរបៀបកម្មវិធីធ្វើការ។

សូមពន្យល់:
A) តើ Abstraction គឺជាអ្វី?
B) តើ Abstraction ជួយ users និង programmers យ៉ាងដូចម្តេច?
C) ផ្តល់ឧទាហរណ៍មួយនៃ abstraction ពីប្រព័ន្ធ ATM។
💡 ជំនួយ: Abstraction = បង្ហាញតែអ្វីសំខាន់, លាក់លម្អិតស្មុគស្មាញ។
១៤
ArrayList និង Collections
សំណួរ: នៅក្នុង Account.java, transactionHistory ប្រើ ArrayList<Transaction>

សូមពន្យល់:
A) តើ ArrayList គឺជាអ្វី?
B) តើយើងបន្ថែម Transaction យ៉ាងដូចម្តេចទៅក្នុង ArrayList?
C) តើយើងធ្វើយ៉ាងដូចម្តេចដើម្បីមើល transaction ទាំងអស់?
💡 ជំនួយ: ArrayList ប្រើ methods ដូចជា add(), get(), size()
១៥
Object-Oriented Design Principles
សំណួរ: ពិនិត្យរចនាសម្ព័ន្ធទាំងមូលនៃប្រព័ន្ធ ATM (User, Account, Transaction, ATM, Main)។

តើរចនានេះអនុវត្តគោលការណ៍ OOP ណាខ្លះ? រកមើល:
Encapsulation - ការលាក់ទិន្នន័យ
Single Responsibility - ថ្នាក់មួយមានការទទួលខុសត្រូវមួយ
Separation of Concerns - ការបែងចែកតួនាទី

វិភាគរចនា និងផ្តល់យោបល់កែលម្អយ៉ាងហោចណាស់ 2 ចំណុច ដើម្បីធ្វើឱ្យប្រព័ន្ធកាន់តែប្រសើរ។
💡 ជំនួយ: ពិចារណាថាតើមែធីដនៅកន្លែងត្រឹមត្រូវ, តើថ្នាក់មានការទទួលខុសត្រូវច្រើនពេក, និងតើអ្នកអាចបន្ថែមថ្នាក់ថ្មីដើម្បីធ្វើឱ្យកូដកាន់តែច្បាស់។