zoukankan      html  css  js  c++  java
  • (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义01--对象的含义01--属性和字段

    第八章 面向对象编程简介

      本章内容:
      ●  什么是面向对象编程
      ●  OOP技术
      ●  Windows Forms应用程序对OOP的依赖关系

    8.1  面向对象编程的含义

      前面介绍的编程方法称为函数(或过程)化编程,常常会导致所谓的单一应用程序,即所有的功能都包含在几个代码模块中(常常是一个代码模块)。 而使用OOP技术,常常要使用许多代码模块,每个模块都提供特定的功能,每个模块都是孤立的,甚至与其他模块完全独立。这种模块化编程方法提供了非常大的多样性,大大增加了重用代码的机会

      OOP技术以结构、数据的含义以及数据和数据之间的交互操作为基础。这通常意味着要把更多的精力放在项目的设计阶段,但项目的可扩展性比较高。

      除了数据表达方式的一致性外,OOP编程还常常可以简化任务,因为较抽象实体的结构和用法也是一致的。

    8.1.1  对象的含义

      简单地说,对象非常类似于本书前面讨论的结构类型,包含变量成员和函数类型。它所包含的变量组成了存储在对象中的数据,其中包含的函数可以访问对象的功能。略为复杂的对象可能不包含任何数据,而只包含函数,表示一个过程。

      C#中的对象是从类型中创建的,就像前面的变量一样。对象的类型在 OOP 中有一个特殊的名称:类。可以使用类的定义实例化对象,这表示创建该类的一个实例。“类的实例”和对象含义相同,注意“类”和“对象”是完全不同的概念(例如:类型:汽车;实例:路虎,奥迪a6,宝马x5等)

      本章将使用统一建模语言(Unified Modeling Language,UML)语法研究类和对象。UML是为应用程序建模而设计的,从组成应用程序的对象,到它们执行的操作,到我们希望有的用例,应有尽有

      图8-1是打印机类Printer的UML表示方法。类名显示在这个框的顶部(后面将论述下面两个区域)。

      图8-2是这个Printer类的一个实例myPrinter。

      

      在顶部,实例名显示在前面,后面是类名。这两个名称用一个冒号分隔。

    1. 属性和字段

      可以通过属性和字段访问对象中包含的数据。这个对象数据可以用于区分不同的对象,因为同一个类的不同对象在属性和字段中存储了不同的值(比如,每个人都是对象,都有属性:眼睛度数。每个人的眼睛度数是不一样的,但人都是同一个类型。也就是每个对象是独立的。(静态数据除外))

      含在对象中的不同数据构成了对象的状态。假定一个对象类表示一杯咖啡,叫作CupOfCoffee。在实例化这个类(即创建这个类的对象)时,必须提供对类有意义的状态。此时可以使用属性和字段,让代码能通过该对象设置要使用的咖啡品牌,咖啡中是否加牛奶或方糖,咖啡是否即溶等。于是,给定的这杯咖啡对象就有了指定的状态,例如,加牛奶和两块方糖的哥伦比亚滴滤咖啡。

      字段和属性都可以键入,所以可以把信息存储在字段和属性中,作为string值、int值等。但是,属性与字段是不同的,因为属性不提供对数据的直接访问。对象能让用户不考虑数据的细节,不需要在属性中用一对一的方式表示。

      一般情况下,在访问状态时最好提供属性,而不是字段,因为这样可以更好地控制各种行为,这个选择不会影响使用对象实例的代码,因为使用属性和字段的语法是相同的。

      对属性的读写访问也可以由对象来明确定义。某些属性是只读的,只能查看它们的值,而不能改变它们(至少不能直接改变)。还可以有只写的属性,其操作方式是类似的。

      还可以为字段和属性指定另一种访问权限,称为可访问性。这种可
    访问性确定了什么代码可以访问这些成员,它们是可用于所有的代码(公共),还是只能用于类中的代码(私有),或者更复杂的模式(详见本章后面的内容)。常见的情况是把字段设置为私有,通过公共属性访问它们(这样外部只能通过公共方法修改对象的数值,避免传入无效数值)

      在类的UML表示方法中,用第二部分显示属性和字段,如图8-3所示。

      

      每个成员都包含下述信息:

        可访问性,+号表示公共成员,-号表示私有成员。但一般情况下,本章的图中不显示私有成员,因为这些信息是类内部的信息。至于读/写访问,则不提供任何信息。

        成员名。

        成员的类型。

      冒号用于分隔成员名和类型。

  • 相关阅读:
    BZOJ 3506 机械排序臂 splay
    BZOJ 2843 LCT
    BZOJ 3669 魔法森林
    BZOJ 2049 LCT
    BZOJ 3223 文艺平衡树 splay
    BZOJ 1433 假期的宿舍 二分图匹配
    BZOJ 1051 受欢迎的牛 强连通块
    BZOJ 1503 郁闷的出纳员 treap
    BZOJ 1096 ZJOI2007 仓库设计 斜率优化dp
    BZOJ 1396: 识别子串( 后缀数组 + 线段树 )
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/4929809.html
Copyright © 2011-2022 走看看