.NET复习要点

image
image
重点:第七章、第八章面向对象⭐⭐

一、填空题要点

顶层类Object属性和事件(第七章P163)

4个公有成员方法:
image
使用:

object o1 = new object();
Console.WriteLine(o1.GetType());	//输出System.Object

面向对象相关概念(第七章P137)

主要特性:封装性、继承性、多态性


  • 类是一种提供功能的数据类型,可以用来声明、产生对象。可以把类理解成一种定义了对象行为和外观的抽象模板,把对象看作是类的具体实例;对象就是类的一个实例,而一个类可以创建多个对象。

  • 对象
    任何一个对象都具有属性和方法这两个要素。
    一个系统的多个对象之间通过一定的渠道相互联系,因此对象要能收发消息。所谓消息,就是对象与对象之间用来沟通的信号、语言等。

  • 访问修饰符
    image

  • 静态类(第七章P159)
    使用static关键字声明
    image

  • 抽象类(第8章P183)
    使用abstract修饰
    有抽象类成员,只有声明,没有实现;可以包含非抽象的成员
    抽象类不能被实例化,因为包含没有实现的成员
    从抽象类继承的类必须实现所有功能,如果没有完全实现,也会变成抽象类,必须用abstract修饰。
    抽象类定义方法,由派生类实现

  • 委托(第8章P196)
    委托能将方法本身作为参数传递
    声明委托

[访问修饰符] delegate 返回值类型 委托名([参数列表]
public delegate int Caculate(int x, int y); //声明了一个Caculate的委托

委托的实例化

委托类型 委托变量名 =  new 委托型构造函数( 委托要引用的方法名)
int intAdd(int x, int y){
	return x + y;
}

int intSub(int x, int y){
	return x - y;
}
Caculate a1 = new Caculate(intAdd);
Caculate a2 = new Caculate(intSub);

委托方法的调用

Caculate cal = new Caculate(intAdd);
int result = cal(6,8);

//另一种调用
Caculate cal = intAdd;
int result = cal(6,8);

委托使用分为3步:类型定义、对象创建和方法绑定、方法调用
一个委托对象可以封装多个方法进行多路广播

  • 接口(第8章P188)
    接口比抽象类型更抽象,只描述能提供什么服务,但不实现任何功能
    C#可以用接口实现多继承
    功能由派生类实现
  • 事件(第8章P203)
    完整的事件有三要素
    image
    发布者类中声明事件
public delegate void ClassEventHandler();     //声明委托
public class Subscriber     //发布者类
{
    private string str;
    public string Str
    {
        get { return str; }
        set { str = value; }
    }
    public event ClassEventHandler InputStr;    //声明事件
    public void InputSomething()
    {
        if(Console.ReadLine() == "class")
        {
            if (InputStr != null)
                InputStr();      //触发事件
        }

    }
}

订阅者类中订阅事件

public class Student: Person, AttendClass, Exam
{
    public Student(string name, string id):base(name, id)
    {

    }

    public void Enter(Subscriber sub)
    {
        sub.InputStr += go_to_class;
    }

    public void go_to_class()
    {
        Console.WriteLine("----------------------");
        Console.WriteLine(Name+":我要去听离散数学课了!");
    }

    public void go_to_exam()
    {
        Console.WriteLine("----------------------");
        Console.WriteLine(Name+":我来参加离散数学的考试");

    }
}

EventHandler委托

在.NET Framework中内置的EventHandler委托具有两个参数,它们的数据类型分别是Object和EventArgs类型,并且没有返回值

对控件的遍历访问(第6章P109)

foreach (Control item in this.Controls)

ADO.NET进行数据库访问的核心对象(第12章P296)

image

二、选择题要点

MessageBox.Show()参数(第4章P75)

MessageBox.Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon);
显示具有指定文本、标题、按钮和图标的消息框。

容器类控件(第5章P98)

image

  • 分组框GroupBox:把RadioButton(单选框)和CheckBox(复选框)等控件放在其中
  • 面板Panel:只有GroupBox有标题,Panel有滚动条
  • 选项卡TabControl:可以生成多页对话框

集合类控件(第6章P117)

  • 列表框ListBox
    常用操作
# 在列表中插入元素
listBox1.Items.Add(0);
listBox1.Items.Add("zero");
object[] obj = new object[4]{2,"two",3,"three"};
listBox1.Items.AddRange(obj);
listBox1.Items.Insert(2, 1);
listBox1.Items.Insert(3, "one");
# 从列表中删除元素
listBox1.Items. Remove (0); 
listBox1.Items. RemoveAt (0);
# 从列表中清除所有项目
listBox2. Items.Clear( );
# 获取列表中的项目数
listBox1.Items.Count
# 判断指定值是否在表中
bool b1=listBox1.Items.Contains(3);
bool b2=listBox1.Items.Contains(“three”);
# 将列表中的全部项目写到数组中指定位置
object[] obj2 = new object[10];
listBox1.Items.CopyTo(obj2, 0);
# 获取列表指定项的索引
int i=listBox1.Items.IndexOf("two");
# 获取列表指定索引处的项目
object item4 =listBox1.Items[3];
# 获取列表中指定的项
listBox1.SelectedItems
  • 复选列表框CheckedListBox
    常用的基本和ListBox一致
# 获取项目项目中复选框的选择状态
bool b = checkedListBox1.GetItemChecked(4);
  • 组合框ComboBox(下拉框)
    SelectedIndex表示选中了第几个

三、编程题要点

  • 会设计一个类
  • 类的实例化
    委托类的创建、实例化,匿名方法委托
    匿名方法:不写出该方法的定义,而是将代码直接写在委托创建表达式中
  • 方法的实现
    文件处理、异常处理等
  • 事件的创建
事件的例子点击查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ex8
{
    //定义事件,输入class时触发时间,学生上课

    public delegate void ClassEventHandler(bool isClassBegin);  //定义委托类型
    public class Bell
    {    //发布者类
        private bool isBegin = false;
        public bool IsBegin
        {
            get{ return isBegin; }
            set{ isBegin = value; }
        }

        public event ClassEventHandler OnClassChange; //声明事件
        public void BellChange()
        {
            isBegin = !isBegin;
            Console.WriteLine("现在是:{0}", isBegin ? "上课" : "下课");
            if (OnClassChange != null)
                OnClassChange(isBegin);   //触发事件
        }
    }

    public class Teacher
    {//订阅者类
        public void isClass(Bell bell)
        { //订阅事件
            bell.OnClassChange += isGotoClass;
        }
        public void isGotoClass(bool isBegin)
        {  //事件处理程序
            if (isBegin)
            {
                Console.WriteLine("Teacher: Class Beginning!");
            }
            else
            {
                Console.WriteLine("Teacher: Class Not Beginning!");
            }
        }
    }
    public class Student
    { //订阅者类
        public void isClass(Bell bell)
        { //订阅事件
            bell.OnClassChange += isGotoClass;
        }
        public void isGotoClass(bool isBegin)
        {  //事件处理程序
            if (isBegin)
            {
                Console.WriteLine("Student: Class Beginning!");
            }
            else
            {
                Console.WriteLine("Student: Class Not Beginning!");
            }
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            Bell bell = new Bell();  //实例化发布者类
            Student stu = new Student();    //实例化订阅者类
            Teacher teacher = new Teacher();
            stu.isClass(bell);  //绑定事件
            teacher.isClass(bell);  //绑定事件
            bell.BellChange();  //触发事件
            bell.BellChange();  //触发事件
            bell.BellChange();  //触发事件
        }
    }
}

image

四、简答题要点

不同类的区别

  • 静态类
    只包含静态成员
    不能被实例化
    不能被继承
  • 抽象类
    抽象类中包含的抽象方法只有声明,没有实现
    不能实例化
    只能作为基类被继承
  • 密封类
    不能被继承,和抽象类相反
    方法必须是实现的,不能是虚拟的或抽象的

对象方法实现

  • 重载和重写(第8章P179
    重载:方法名相同,参数表不同
    重写:与多态性相关,派生类在继承时重写基类的方法,用override
  • 委托
    多路广播:向一个委托的调用列表添加多个方法引用后,通过调用该委托一次性调用所有的方法。
    用委托合并来实现多路广播
    委托合并就是委托对象的相加

简单类型和对象类型

  • 值类型
    进一步划分为简单类型、枚举类型、结构类型
    装箱:将值类型转换为引用类型
    拆箱:将引用类型显示转换为值类型
  • 引用类型
    类、接口、委托、数组、字符串、对象型(动态数组、队列、栈、哈希表、有序列表)
  • 类型转换(第2章P34)
    隐式转换:编译系统自动进行
    显式转换:
    (int)(..)
    int.Parse("100")
    Convert.ToInt32("100")

ADO.NET数据库访问机制(第12章P298)

  • 联机访问
    程序在处理数据过程中,没有与数据库端口,一直与数据库保持连接状态
    image
  • 脱机访问
    没处理数据之前,与数据库连接来获取数据,数据处理过程中与数据库断开,处理完数据再与数据库连接来更新数据
    image

注:有错误请指出!

posted @ 2022-01-07 11:43  inss!w!  阅读(57)  评论(0编辑  收藏  举报