C# 面向对象编程的核心技能的理解学习记录

学习的困惑

1. 不知道怎么学习

  • 刚开始学习变成,看了相关的教材,但是没有体会到什么是面向对象编程,也不知道怎么深入学习;

2. 只是盲目的使用

  • 已经工作,也会做一些项目,但是很多时候不明白为什么这么设计。
  • 自己的知识点很多,但是没有系统性,也不知道该往哪个方向发展。

我现在就是处于这个情况,有一些了解,看着别人的项目我也能再写一个但是很多地方很难理解,知识很散乱,真的,很无奈,在这里一开始接触windows就要自己编出一个项目来,没有一点点的C#的基础,以前是做Android的,Android一项还没搞明白,现在又被拉着做windows了,确实自己的翅膀不够硬的时候总是会被被人牵着鼻子走,呵呵,无所谓了。。。。。兵来将挡水来土掩!!!就是这个feel~

3.输入输出垃圾

  • 能做项目,而爱好研究技能,自我觉得很不错;
  • 为什么搞那么复杂呢?编程不就是堆积代码?what???

举例

一些项目中看到的问题:

项目的功能实现很不错,但是在具体实现的过程中,代码的可读性很差。控件的命名直接是1,,2,3,4,5,6,7.。。。。

程序的健壮性很差,后期修改很难实现,代码看起来很头疼。

不只是实现功能就完事儿了,程序的健壮性和可读性这些都是需要考虑在内的问题。

解决方案

关于面向对象编程不用去给一个精确的定义,提出这种方式是为了让编程更简单。

  • 学习面向对象编程是学习面向对象编程的原则,方法,技巧,经验,模式等的综合应用。

开发者必须掌握的OOP原则:

单一职责原则(对象职责明确原则)

  • 要求:一个对象只做好一件事情,必须专注,职责过多容易引起变化的原因就很多,程序不稳定。

开放封闭原则(核心原则)

  • 要求:需要变化时尽量少的修改类的设计,而是通过扩展类来完成。即封闭修改,开放扩展。

依赖倒置原则(OOP精髓)

  • 要求:基于接口编程,高层模块调用接口,底层模块实现接口,防止底层变化直接影响高层。

接口隔离原则

  • 要求: 尽可能多的使用专用的小接口,而不是总接口,避免接口过于复杂。

里氏替换原则

  • 要求:在继承关系中子类可以替换父类,虚拟机可以根据父类变量动态的找到具体的子类对象,从而实现多态。

面向对象的最终目标:程序应该很“健壮”,同时具备良好的可扩展性,可维护性。

说说现在的我自己吧,Java也还没有精通,所以对面向对象编程真的是一塌糊涂,只是看着别人怎么写,我就仿照形式完成需要的功能,到目前为止我见过的优秀代码可能没有,工作中的小伙伴是一个工作七八年的老司机了,但是写的代码真的不能看,我很无奈,看着那种没有一行注释的代码,基本上是不可维护性的,更新全靠重装,这也是我们整个公司的毛病,系统升级全靠重装系统。想想有点可怕,这种要是没出问题还好,出了问题,一个一个的给客户在重新装系统??或者说客户使用你的产品还需要学习如何烧内核??真是无法理解。所以我接手的项目基本上都是比较烂的项目,这样说也不过分,我自己的项目也好不到哪里去。

我就觉得吧,公司应该考虑长远的发展而不能只是急于一时的追求实现功能,像这样的问题,最后客户反应的也不再少数吧,前两天还接到客户的反馈电话,各种问题,真的是没法补救。我也很头疼的,我想做好,但是能力不够,so, 目前说多少都没用,加油提升自己,让技术来证明你的考虑是正确的。

原文地址:https://www.cnblogs.com/skyeblogs/p/8465017.html

时间: 2024-11-05 20:42:32

C# 面向对象编程的核心技能的理解学习记录的相关文章

面向对象编程的三个特性理解

面向对象编程的三大特性是 封装.继承.多态. 封装:是指对象把自己的数据和对数据的操作封装在了一起: 继承:是指子类对父类的继承,子类把父类的数据和对数据的操作继承了过来,同时又增添了自己的数据和对数据的操作: 多态:主要有两种类型的多态.一种是操作的名称的多态,即多个操作的名称一样,但接受的消息类型必须不同:另一种是与继承相关的多态,来自不同类型的对象对同一操作的调用产生不同的效果. 原文地址:https://www.cnblogs.com/zengfanye/p/9393524.html

C# 面向对象编程中如何定义类,理解各个关键字的作用

第一:基本类的定义 1 class Person 2 { 3 //我是一个Person类,默认类的修饰符是intenal,只能在当前程序集中访问 4 } 和上面案例一样的类定义如下,二者意思一样 1 internal class Person1 2 { 3 //我是一个Person1类,允许当前程序集中访问,其它项目不能访问 4 } 第二:声明可以在当前程序集中访问也可以在其它项目中访问的类,定义如下 1 public class Person2 2 { 3 //我是一个Person2类,可以在

廖雪峰Java2面向对象编程-6Java核心类-1字符串和编码

Java的字符串用String表示 1.String特点: 可以直接使用"..."表示一个字符串,不必使用new String:String s1 = "hello world"; 内容不可变 String s = "hello world"; System.out.println(s.equals("hello world")); 2.判断是否相等equals ` String s = "hello world&q

面向对象编程与面向过程编程的区别(翻译版)

应对复杂性的能力不同.?? 我们知道现在存在着两种不同的编程方式-1) 面向过程编程(POP)以及2)面向对象编程.我们可以任意选择一种方式来编写程序,但是我们得知道这两种编程方式的区别.这两种编程方式是软件开发历经几十年发展的结果.从计算机被发明起,人们尝试了很多方法来编写程序,例如a)自顶向下编程:b)自底向上编程:c)模块化编程:d)结构化编程等等.这些方法的根本目的只有一个-"使编程更加高效"-即让编写一个复杂的程序变得简单.自由.bug少.易于理解.易于扩展.易于修改等等.

077 面向对象编程

一.面向过程的编程 面向过程编程的核心是过程二字,过程指的是解决问题的步骤,即先干什么在干什么然后干什么... 基于面向过程编程的思想,编写程序好比在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题流程化,进而简单化 缺点:扩展性差 二.面向对象编程 你可以把你自己想象成如来佛祖,然后你想找四个人去取经,所以你就去找了四个人取经.你找来了四个普通人准备让他们去取经,但是这四个人不是猪八戒.也不是孙悟空--所以你给一个普通人加了一个猪耳朵.给了他九齿钉耙:给了另外一个普通人毛脸雷公嘴.给了

[.net 面向对象编程基础] (17) 数组与集合

[.net 面向对象编程基础] (17) 数组与集合 学习了前面的C#三大特性,及接口,抽象类这些相对抽象的东西以后,是不是有点很累的感觉.具体的东西总是容易理解,因此我们在介绍前面抽象概念的时候,总是举的是具体的实例以加深理解. 本节内容相当具体,学起来也相当轻松. 1.数组 1.1 什么是数组? 数组是一种数据结构,包含同一个类型的多个元素. 1.2数组的初始化 string[] mystringArray; 类型+方框号 数组名 1.3数组初始化 我们知道数组是引用类型,所以需要给他分配堆

C#面向对象编程 封装 继承 多态

  C#面向对象编程 什么是面向对象? 面向对象编程是上个实际六十年代继面向结构编程之后提出的一个新的编程思想 封装,继承,多态 封装,继承,多态是面向对象编程的核心: 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类).被封装的对象通常被称为抽象数据类型 意义是:保护数据不被破坏(例如一台电视机我们能使用它但是不能随意改变内部的电路) 关键字:private,public,protected,internal Public string name;

凭什么要用面向对象编程(补充)

接上篇 面向对象重要设计原则概述 ★2007-10-02  08:00 小菜在家中准备小菜开始准备给人家讲座的内容,一开始都很顺利.可是当要把不同的验证方式给细化时,发现了问题.  24 原有的接口实现关系图 如果要再把是用户名密码验证,还是指纹验证的代码加进来,应该如何写具体的实现类呢?  25 SqlServer实现类改造此时你会发现,如果要实现这个功能,你必须在你的每个实现类中写出上面的判断语句,如果某一天要增加一种数据访问(比如MySql)你就得再写一遍类似的代码,如果某天增加一个用户验

面向对象编程思想总结

什么是面向对象编程? 就是把一类具有相同属性和动作的实体抽象成为计算机里面的类, 也就是对象的模板, 把属性和方法封装成一个类中. 处理业务的流程就是对象之间的信息传递. 把程序中的所有东西当做对象来进行处理. 为什么需要面向对象编程? 面向对象编程更加模块化,更加易于构建大型项目. 而且面向对象编程有利于更新和维护, 其简化了企业级的编程的协同问题 面向对象编程相对于面向过程编程有什么优势? 项目可以做的更大,模块之间解耦, 调用更简单, 易于修改和维护, 适合大型项目 面向对象编程的核心思想