我正在研究OOP概念。正如我從我讀過的文檔中所理解的那樣,我爲OOP中的封裝概念編寫了一個示例程序。我在下面粘貼了我的代碼。我的封裝概念是正確的嗎?封裝在OOP中
Default.aspx的
<asp:Button ID="showBtn" Text="Show employee details." runat="server"/>
Default.aspx.cs
public partial class _Default : System.Web.UI.Page
{
Employee emp;
protected void Page_Load(object sender, EventArgs e)
{
emp = new Employee();
emp.SetEmployeeID(001);
emp.SetEmployeeSalary(5000);
emp.EmployeeName = "Rob";
emp.EmployeeAge = 26;
showBtn.Click += new EventHandler(showBtn_Click);
}
void showBtn_Click(object sender, EventArgs e)
{
emp.ShowEmployeeDetails();
}
}
類別的僱員
class Employee
{
private int empId;
private int empSalary;
private string empName;
private int empAge;
public void SetEmployeeID(int id)
{
empId = id; //Mutator
}
public void SetEmployeeSalary(int sal)
{
empSalary = sal; //Mutator
}
public int GetEmployeeID()
{
return empId; //Accessor
}
public int GetEmployeeSalary()
{
return empSalary; //Accessor
}
public string EmployeeName
{
get { return empName; } //Accessor
set { empName = value; } //Mutator
}
public int EmployeeAge
{
get { return empAge; } //Accessor
set { empAge = value; } //Mutator
}
private void ShowDetails()
{
HttpContext.Current.Response.Write(this.GetEmployeeID() + " : " + this.EmployeeName + " : " + this.EmployeeAge + " : " + this.GetEmployeeSalary());
}
public void ShowEmployeeDetails()
{
ShowDetails();
}
}
我的主要懷疑是關於我在Employee中調用ShowDetails()方法的方式。這是隱藏ShowDetails()方法的好方法嗎?
封裝不是關於隱藏方法,請考慮對此問題的解答:http://stackoverflow.com/questions/18300953/why-encapsulation-is-important-feature-of-oop-languages/ – BartoszKP