ASP.NET Object Oriented Programming 物件導向程式開發筆記
文章推薦指數: 80 %
筆記關於ASP.NET 物件導向開發的常見的名詞與使用情境. logo. 說明. 物件導向的程式設計,是以物件的互動的方式進行開發,可以提升程式的可維護性, ...
2021-06-09
Dev
說明屬性Property多載Overload建構子Constructor覆寫Override物件的關係RelationshipUSE-AHAS-AIS-A介面Interface靜態修飾Static參考資料相關連結
筆記關於ASP.NET物件導向開發的常見的名詞與使用情境
說明物件導向的程式設計,是以物件的互動的方式進行開發,可以提升程式的可維護性,對於複雜與大規模的系統開發有著更好的管理。
物件導向設計與資料庫的設計息息相關,都是從需求到建立抽象化模型的過程。
而該如何識別類別,可以從需求情境中,找出名詞關鍵字作為實體,動詞作為方法建構出類別。
在類別設計上,需要注意切割責任,保持類別的單一功能,將客戶的地址由primitivetype(string)獨立為Class,讓基於地址的資料(zipCode,city,street..)與方法由類別負責。
屬性Property屬性是公開面對外界的物件資料,依據情境可以提供getter/setter或只提供getter。
屬性背後指向的仍是Field,而Field是封裝在物件之中不提供外界直接存取。
藉由Property可以從Field衍生多種資料。
例如BirthdateField可以衍生為AgeProperty;LastName與FirstNameField可以衍生為組合再一起的FullName。
publicclassPerson
{
privateDateTime_birthDate;
publicintAge=>(DateTime.Now-_birthDate).Days/365;
privatestring_lastName;
privatestring_firstName;
publicstringName=>$"{_firstName},{_lastName}";
}
屬性通常會與驗證做結合,在ASP.NETMVC框架中,搭配DataAnnotations設定屬性的規範,可以在使用EntityFramework時自動進行檢查,同時也將檢查的設定做關注點的分離,非常方便。
多載Overload函式可以同名,但藉由簽名(由參數的型別、順序、數量所構成)的不同提供使用上的便利性,在不同的使用情境選擇使用。
同時多載函式也可以作為對於執行期間的邏輯控制。
然而參數過多的PrimitiveVariable會變得不容易閱讀,應該用Class作為裝載參數。
在ASP.NETMVC框架中,不論是HtmlHelper或者UrlHelper都有提供多載,在創造HtmlTag上具有極佳的彈性。
建構子Constructor建構子可以定義物件被建立時,建立當下要進行的步驟,通常是為屬性進行賦值。
建構子本身也可以Overloadding,依照使用情境提供不同的參數進行建立。
在MVC的Controller中,如果有共通的ViewBag值需要設定,可以創造該Controller的建構子,這樣所有的Action都會有建構子的設定。
覆寫Override類別可以覆寫所繼承(Inherit)或者所實作介面(ImplementInterface)的屬性與方法,未被覆寫的內容達到程式碼重複使用的便利,覆寫的內容則提供了程式設計與擴充上的彈性。
覆寫可以針對類別(Class)、抽象類別(AbstractClass)與介面(Interface)中的屬性或方法進行覆寫,允許被覆寫的屬性與方法須明確以Virtual修飾,否則預設都是不可被子類別複寫的Sealed修飾。
抽象類別的方法與屬性則是以Abstract進行修飾。
MVC提供了許多可供覆寫的元件,許多機制的客製化,就是實作介面並覆寫方法,例如Filter、RouteHandler。
物件的關係RelationshipUSE-A類別之間是使用關係,例如在任務類別中啟用了一個計時器的類別。
publicclassCalculator
{
publicvoidCaculate()
{
vartimer=newTimer();
...
}
}
publicclassTimer
{
publicDateTimeTime{get;set;}
}
HAS-A類別之間是擁有關係,例如計算機類別擁有一個CPU類別。
publicclassCalculator
{
publicstringName{get;set;}
publicCPUComputeChip{get;set;}
}
publicclassCPU
{
publicstringModel{get;set;}
}
IS-A類別之間是繼承關係或者實作關係,因此可以使用物件導向中多型(Polymorphism)的功能。
publicclassCalculator:IComputable
{
publicstringName{get;set;}
publicCPUComputeChip{get;set;}
publicvoidCompute()
{
...
}
}
publicclassCalculator:Object
{
publicstringName{get;set;}
publicoverridestringToString()
{
returnbase.ToString();
}
}
介面Interface
MVC中常見的Interface:IActionFilter、IDisposable
靜態修飾Staticstatic可以用於修飾Class形成靜態類別,或者是修飾類別中的屬性與方法。
靜態類別的特性是無法實體化,且其成員(屬性與方法)都被須為static修飾,而靜態類別的屬性與方法可以直接被呼叫。
publicstaticclassHelperMethod
{
publicstaticintSquareSum(intx,inty)=>x*x+y*y;
}
staticvoidMain()
{
Console.WriteLine(HelperMethod.SquareSum(1,5));//26
}
一般類別中的靜態屬性或靜態方法,不是保存在個別的實體化物件之中,而是保存在類別之中,只會有一份資料,可以用於類別與其物件管理上的用途。
publicclassPerson
{
publicstaticintCount{get;set;}
publicstringName{get;set;}
publicPerson()
{
Count+=1;
}
publicstaticintPersonNumbers{get{returnCount;}}
}
staticvoidMain()
{
varp1=newPerson(){Name="Javis"};
varp2=newPerson(){Name="Ted"};
Console.WriteLine(Person.PersonNumbers);//2
}
參考資料Object-OrientedProgrammingFundamentalsinC#
相關連結CourseReview-C#IntermediateClasses,InterfacesandOOP
VisualStudio入門教學
Older
HTTPHeaderContentSecurityPolicy(CSP)
Newer
SQLServer記憶體監控(MemoryMonitor)
RecentPosts
SQLServerDataCompression(Row,Page,ColumnStore&ColumnStoreArchive)
AzureDevOpsCIPipelineWithCheckmarx
DP-300證照準備心得(MicrosoftAdministeringMicrosoftAzureSQLSolutionsStudyGuide)
SQLServer使用AzureStorageAccount備份資料庫(BackupDatabaseToURL)
SQLServerAzureSQLSolutions
Categories
Blog3Cloud2CyberSecurity19Database125Design1Dev159IIS34LearningNote24LifeHack6Microsoft1Misc34Mobile1Network4News1OS60Office11PowerBI8Resource10Toys22TroubleShooting4Vue13
Archives
202217120212432020128
Home
Categories
Tags
Apps
About
延伸文章資訊
- 1物件導向入門篇 - KingKong Bruce記事
NET Framework中,談物件導向的資料不多,但物件導向又很重要,在寫或設計物件導向,本身需要有高度「抽象化」的能力,而且絕大部份都是使用C#在談。
- 2VB.NET 的物件導向程式設計(一) - 隨便寫寫的新天地- 痞客邦
物件導向程式設計Object Oriented Programming (OOP)◎ 抽象Abstraction◎ 封裝Encapsulation◎ 多型Polymorphism◎ 繼承In.
- 3ASP.NET Object Oriented Programming 物件導向程式開發筆記
筆記關於ASP.NET 物件導向開發的常見的名詞與使用情境. logo. 說明. 物件導向的程式設計,是以物件的互動的方式進行開發,可以提升程式的可維護性, ...
- 4VB.NET 的物件導向程式設計(二) - 隨便寫寫的新天地- 痞客邦
依據VB.NET 的物件導向程式設計(一) 所建立的類別1. 建立物件Private myCustomer1 As CustomermyCustomer1 = New Customer 可縮寫.
- 5C# 從零開始前進.NET物件導向程式全攻略 - TibaMe
學習Microsoft第一線程式語言C#基礎語法,進入物件導向程式設計概念與設計,進而學習到C#語言如何操作.net Framework,以及如何設計物件導向程式規範 ...