ASP.Net软件工程师基础(二)
1、封装
答:属性封装了字段,通过get和set访问器限制字段对外开放的程度;将重复的代码封装成方法,实现DCR原则(Don't Copy yourself);方法的参数组合可以用类实现,即在方法中不要传入超过3个以上的参数,否则定义一个类,直接将类对应的对象作为参数传入;将实现统一功能的类中所以的方法提取到接口或抽象类中(最明显的体现在三层中,DAL层抽象出一个只定义了增删查改功能的IDAL接口),至少也要写成虚方法,以实现面向对象编程(多态的实现)。
public interface IBaseDAL<T> where T : class,new()
{
T Add(T model);
bool Update(T model);
bool delete(int id);
T GetModel(int id);
List<T> GetList();
}
公用DAL层接口
public class BookDAL : IBaseDAL<Book>
{ public Book Add(Book model)
{
throw new NotImplementedException();
} public bool Update(Book model)
{
throw new NotImplementedException();
} public bool delete(int id)
{
throw new NotImplementedException();
} public Book GetModel(int id)
{
throw new NotImplementedException();
} public List<Book> GetList()
{
throw new NotImplementedException();
}
}
这里我就不写全了
具体类实现
2、继承
答:在C#中类是单继承的,而接口是可以多继承的(通常对于接口的继承我们称之为“实现接口”)
public class Student : Person,ICloneable,IEnumerable
{ public object Clone()
{
throw new NotImplementedException();
} public IEnumerator GetEnumerator()
{
throw new NotImplementedException();
}
}
继承的实现
继承的好处:代码重用;多态实现的方式之一(涉及到一个软件开发原则:里氏替换原则),举个例子,在方法中,参数传父类对象,而在调用是,只要传入子类对象就可以了,前提他们是继承关系。
class Program
{
static void Main(string[] args)
{
Child c = new Child();
c.Name = "TQ";
c.Age = ;
Console.WriteLine(Say(c));
Console.ReadKey();
} public static string Say(Person p)
{
return p.Name;
} public class Person
{
private string _name; public string Name
{
get { return _name; }
set { _name = value; }
} public int Age
{
get;
set;
} public string this[int key]
{
get
{
string result = "";
switch (key)
{
case : result = "a"; break;
case : result = "b"; break;
}
return result;
}
}
} public class Child : Person
{ }
}
里氏替换
构造函数不能被继承,通过base.方法(),可以在子类中调用父类的方法。
class Program
{
static void Main(string[] args)
{
Child c = new Child();
c.Name = "TQ";
c.Age = ;
Console.WriteLine(Say(c));
Console.ReadKey();
} public static string Say(Person p)
{
return p.Name;
} public class Person
{
private string _name; public string Name
{
get { return _name; }
set { _name = value; }
} public int Age
{
get;
set;
} public void Speach()
{
} public string this[int key]
{
get
{
string result = "";
switch (key)
{
case : result = "a"; break;
case : result = "b"; break;
}
return result;
}
}
} public class Child : Person
{
public void Speach()
{
base.Speach();
}
}
}
base调用父类方法
类中的成员如果不写访问修饰符默认是private
访问修饰符:Public(接口成员默认)、Protected、Private(类成员默认private)、internal(类默认internal)
访问级别约束:子类的访问级别不能比父类的高;类中属性或字段的访问级别不能比类的访问级别高;方法的访问级别不能比方法的参数和返回值的访问级别高(如果将上例代码中Person类的访问修饰符改为Private,编译就会报错)。
ASP.Net软件工程师基础(二)的更多相关文章
- ASP.Net软件工程师基础(一)
本人目前是一名有1年左右ASP.Net开发经验的的软件开发工程师,目前公司用的是MVC+EF+...做的网站.写这套总结性系列文章的目的有两个:一是帮助自己总结一下自己到底有多少斤两,而不是一味的学新 ...
- ASP.Net软件工程师基础(四)
1.接口 (1)接口是一种规范.协议,定义了一组具有各种功能的方法(属性.索引器本质是方法). (2)接口存在的意义:多态.多态的意义:程序可扩展性. (3)接口解决了类的多继承的问题. (4)接口解 ...
- ASP.Net软件工程师基础(三)
1.多态 答: (1)虚方法 public class Child : Person { public void Speach() { base.Speach(); } public virtual ...
- QT软件工程师招聘市场需求报告
QT软件工程师招聘市场需求报告 目录 最流行的编程语言排行榜 QT软件工程师职位需求 QT软件工程师薪资待遇 QT软件工程师行业需求 QT软件工程师QT技术需求 QT软件工程师基础技术需求 QT软件工 ...
- GIS基础软件及操作(二)
原文 GIS基础软件及操作(二) 练习二.管理地理空间数据库 1.利用ArcCatalog 管理地理空间数据库 2.在ArcMap中编辑属性数据 第1步 启动 ArcCatalog 打开一个地理数据库 ...
- 软件工程师 Book
一.软件工程师 --Clean Code<代码整洁之道> --Implementation Patterns<实现模式> --Code Complete<代码大全& ...
- 第二节:Web前端-ASP.NET之C#基础
第二节:Web前端-ASP.NET之C#基础 学习ASP.NET,要掌握学习语言,控件等技能, <div style="text-align: center; line-height: ...
- JavaSE 软件工程师 认证考试试卷3
JavaSE 软件工程师 认证考试试卷 笔试 考试时间150分钟 总分 100分 姓 名_______________________ 身份证号___________________ ...
- Java 初级软件工程师 认证考试试卷1
Java 初级软件工程师 认证考试试卷 笔试(A卷) 考试时间150分钟 总分 100分 姓 名_______________________ 身份证号_____________ ...
随机推荐
- 内容模块PC标签调用说明
内容模块 模块名:content 模块提供的可用操作 操作名 说明 lists 内容数据列表 relation 内容相关文章 hits 内容数据点击排行榜 category 内容栏目列表 positi ...
- oracle分析函数 之分组累加求和
select s.slice_date_to ,s.made_id ,sum(s.steup_count)over(partition by s.made_id order by s.slice_da ...
- HTML5跨浏览器表单及HTML5表单的渐进增强
HTML5跨浏览器表单 http://net.tutsplus.com/tutorials/html-css-techniques/how-to-build-cross-browser-html5-f ...
- 程序员书单_J2EE专题
Enterprise JavaBeans 3.0中文版(第5版) http://download.csdn.net/detail/shenzhq1980/9104015 J2EE设计模式 http:/ ...
- 剑指offer系列36----二叉搜索树的第k个节点
[题目]给定一颗二叉搜索树,请找出其中的第k大的结点. * 例如, 5 * / \ * 3 7 * / \ / \ * 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4. 中序遍历:2 3 4 ...
- 域控制器中的FSMO角色
FSMO是Flexible single master operation的缩写,意思就是灵活单主机操作.营运主机(Operation Masters,又称为Flexible Single Maste ...
- c#启动进程
//System.Diagnostics.Process p = new System.Diagnostics.Process(); //p.StartInfo.FileName = @"C ...
- Unix_Linux系统定时器的应用(案例)
2014-05-05 Created By BaoXinjian
- NeHe OpenGL教程 第五课:3D空间
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 实现读入一个彩色视频文件并以灰度格式输出这个视频文件,学习opencv例2-10
#include "cv.h"#include "highgui.h"int main(int argc,char* argv[]){ //书本中的main没有 ...