《面向对象》第一讲

一、为什么需要面向对象?
生活中所有的东西都是一个个的对象,为了描述他们方便,我们就把它们使用面向对象的方式来解决。

二、什么是面向对象编程?
根据具本的实际生活(业务),设计相对应的类或对象出来,按照生活中的流程或逻辑来操作程序中的类或对象,这样更直观,更方便。

三、面向对象的三大特性:封装、继承、多态。
**********************************************************
一、类的基本概念
(一)类的基本了解。
类:自己定义的一种复杂的类型。
类一般包括两大部分:字段-成员变量(名词或形容词),方法-成员函数(动词)
类的关键词:class
(二).类的定义:
class 类名
{
成员变量的定义;
...
成员函数的定义;
...
}
在类的成员(成员变量,成员函数)前面经常会加访问修饰符(public private protected)
public - 公有的。例如:。。。
private - 私有的。例如:。。。

(三).类的使用:
Dog d = new Dog(); //实例化
d.Name = "旺财";
d.Owner = "张三";
d.Run();

d - 对象的引用。
new Dog() - 真正的狗的对象。

(四)附加:
C#中的变量的类型:
1、值类型:
int float double char bool struct datetime
2、引用类型:
string 数组 自定义的类。
模型图:堆空间与堆空间。
1.用模型图解释:
A a1 = new A();
A a2 = new A();
Console.WriteLine(a1== a2); //结果为什么是false?


2.用模型解释:上面狗的例子,为什么最后d.Run()会显示成李家的狗?


3.用模型解释:int a = 100; int b= 100; Console.WriteLine(a == b);结果为什么是true?

类的封装:不要随便把成员变量设成public,一般需要设成private或protected,通成员方法或成员属性来实现对成员变量的合法访问。

二、类的成员——属性

属性:对成员变量进行访问的端口。
(一)属性的定义:
public 类型 属性名
{
get
{
}
set
{
关键词value.代表是要赋的值。
}
}

(二)属性的使用:
直接通过属性名进行使用。
Console.WriteLine(r.Height); - 调用属性的get部门
r.Height = 180; -调用属性的set部分。

三、类的方法——成员函数——方法重载
方法的名子相同,参数不同(类型不同,个数不同)——形成了方法的重载。
重载方法与返回类型无关。
好处:
1.减少方法名的定义,不用记太多的方法名了。
2.减少代码重复,更大限度的重用,代码结构更合理。

多个重载方法被调用的时候,首先找方法名,然后再根据参数找对应的重载方法。

时间: 2025-01-05 19:04:14

《面向对象》第一讲的相关文章

MIT算法导论——第一讲.Analysis of algorithm

本栏目(Algorithms)下MIT算法导论专题是个人对网易公开课MIT算法导论的学习心得与笔记.所有内容均来自MIT公开课Introduction to Algorithms中Charles E. Leiserson和Erik Demaine老师的讲解.(http://v.163.com/special/opencourse/algorithms.html) 第一节-------课程简介及算法分析 Analysis of algorithm 算法分析:关于计算机程序在效率和资源利用方面的理论

算法导论 第一章

算法导论 第一章,为了让自己基本功更加的扎实,从今天起开始学习算法导论. 我以一位学长的博客为学习的参考资料,开始我的学习吧! 附上一句话: Having a solid base of algorithm knowledge and technique is one characteristic that separates the truly skilled programmers from the novices. 是否具有扎实的算法知识和技术基础,是区分真正熟练的程序员与新手的一项重要特

算法导论第一课

1.课程分两部分:算法分析,算法设计 2.算法分析:首先考虑的是性能,how fast;其次会考虑通信,ram,disk占用等等 3.what is more important than perf ? 功能性,模块化,安全,用户友好,可扩展... then why study algs?  1,perf 在解决问题的最前沿,决定了是否可行,他也是用户友好等的保证,相当与货币,可以用来交换 安全,界面... 4 运行时间的分析:最差情况,平均情况(假设均匀分布),最好情况(bogus假象,不能区

MIT算法导论——第二讲.Solving Recurrence

本栏目(Algorithms)下MIT算法导论专题是个人对网易公开课MIT算法导论的学习心得与笔记.所有内容均来自MIT公开课Introduction to Algorithms中Charles E. Leiserson和Erik Demaine老师的讲解.(http://v.163.com/special/opencourse/algorithms.html) 第二节-------渐近符号.递归及解法 Solving Recurrence 第二节课的内容比较偏数学化,没有算法方面的知识.但尽管

算法导论--第一部分(基础知识)

第一章  算法在计算中的作用 1.1 算法 算法是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或者值的集合作为输出. 对每个输入实例,算法都以正确的输出停机,则称该算法是正确的. 算法的运行时间: $\log{n} < \sqrt{n} < n < n\log{n} < n^2 < n^3 < 2^n < n!$

算法导论-第一章-算法在计算中的作用(速记)

算法就是把输入转换成输出的计算步骤的一个序列. 问题实例由计算该问题解所必需的(满足问题陈述中强加的各种约束的)输入组成. 若对每个输入实例,算法都以正确的输出停机,则称该算法是正确的. 许多有趣的算法问题所共有的两个特征: 1.存在许多候选解,但绝大多数候选解都没有解决手头的问题.寻找一个真正的解或一个做好的解可能是一个很大的挑战. 2.存在实际应用. 数据结构是一种存储和组织数据的方式,旨在便于访问和修改. 原文地址:https://www.cnblogs.com/lixiaov/p/104

算法导论学习笔记(3)-习题2.3-7-排序+二分

question(题意): Describe a O(n lg(n))-time algorithm that, given a set S of n integers and another integer x, determines whether or not there exist two elements in S whose sum is exactly x. 设计一个O(n lg(n))时间复杂度的算法,给定一个n个数字的集合,和一个数字x, 问,是否能在这个集合中找到两个数字,他

算法导论第二章C++实现归并算法排序

归并算法排序的思想算法导论中讲的还算比较清楚. #include<iostream> using namespace std; void guibing(int *_array,int p,int q,int r); void merge_sort(int *_array,int p,int r); int main() { int a[8]={2,4,5,7,1,2,3,6}; int j1=0; int j2=7; merge_sort(a,j1,j2); int i=0; for(;i&

[算法导论]#3 循环不变式

在面试某手的时候,完成了一个有序链表的合并,之后面试官又要求用循环不变式来证明算法的正确性--循环不变式?这是啥 后来发现这是算法导论第一章的内容. 不会=算法导论没看 分析过程 必须证明三条性质 初始化:循环的第一次迭代之前,它为真 保持:如果循环的某次迭代之前它为真,那么下次迭代之前它仍为真 终止:在循环终止时,不变式为我们提供了一个有用的性质,该性质有助于证明算法是正确的 前两步有点类似于数学归纳法,而最后一步其实也很重要,因为算法并不是无穷无尽的,必须要终止.例如二分,终止条件非常重要.

算法导论基础(第一~五章)

插入排序 最好情况输入数组开始时候就是满足要求的排好序的,时间代价为θ(n): 最坏情况输入数组是按逆序排序的,时间代价为θ(n^2). 归并排序 归并排序采用了算法设计中的分治法,分治法的思想是将原问题分解成n个规模较小而结构与原问题相似的小问题,递归的解决这些子问题,然后再去合并其结果,得到原问题的解. 分治模式在每一层递归上有三个步骤: 分解(divide):将原问题分解成一系列子问题. 解决(conquer):递归地解答各子问题,若子问题足够小,则直接求解. 合并(combine):将子