分享
 
 
 

浅谈编程思想的重要性

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

浅谈编程思想的重要性

作者:wfg2005

在面向对象编程里,其实你用什么语言不是最重要的,最重要的是OOP思想。也就是说在面向对象编程中我们要精心去理解的是面向对象的思想

而并非是语言,对于语言来说不管你用的是C++,还是java甚至是新语言C#,它们无非是语法不同。而这些语言(准确的说是所有的面向对象编程语言)

的构造者们在构造这些语言时,都是依据同样的面向对象思想构造。只是构造时采用的方式不同而已,当然除此之外可能在细节上也有所不同,因为这些语

言构造者们可能是站的角度不同或是看法不同,但是他们的“核心思想”都是相同的。对于面向对象中核心概念理解都是一致的。

我想不管我怎样的陈述我的观点。始终是抽象。读者也是难于接受的,所以接下来我就针对面向对象思想的“多态的”概念进行分析和举例

(举例时我将采 java,C#,C++ 进行比较来证明我的观点)

为了便于说明我先简单的介绍一下面向对象重要特怔之一多态:简单的讲多态就是:一种方法多种接口。

准确的说:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

从以上概念中我们知道。多态的实现实质是通过方法这一机制来实现的,当然这里所指的方法(主要)是指类中的方法(或叫服务)。同时也说明

类中的数据是不具有多态性的。从这里我们就可以得出一个结论:在面向对象语言里(无任哪种OOPL)都有实现多态的语言机制。并且这些实现

多态的语言机制都是针对方法的。而数据是不具有多态这一性质的

现在让我们看看当今流行的面向对象语言是不是符合这个结论

便于读者理解我所举的例子。先做一些必要的说明。下面一共举了三种比较流行的OOPL的例子。

分别是。java,C++(采用1998的标准),C#(Microsoft 公司的新语言)

基类:一个Person 其中含有两个共公变量。iNo,strName.一个构造涵数,一个显示方法。

子类:继承于基类Person 基中也含中两个共公变量:iNo,strName.一个构造函数,一个显示方法。

同时请读者注意:举这三个例子我只想说明结论:”在面向对象语言里(无任哪种OOPL)都有实现多态的语言机制。并且这些实现

多态的语言机制都是针对方法的。而数据是不具有多态这一性质的“。而不是从设计的合理性出发的。当然也很少有人会这个设计。我这样做的目的

只是为了让例子简单。便于说明问题

// ------------------java 中例子----------------------------

package wfgA001;

class Person

{

public int iNo;

public String strName;

public Person()

{

}

public Person(int no,String name)

{

iNo=no;

strName=name;

System.out.println("class Person");

}

public void Show()

{ // 用于显示的 iNo和strName的值

System.out.println(" class Person iNo:"+iNo+" strName:"+strName);

}

}

class Student extends Person

{

public int iNo;

public String strName;

public Student(int no,String name)

{

super(111,"class person");

System.out.println("class Student");

iNo=no;

strName=name;

}

// 用于显示的 iNo和strName的值

public void Show()

{

System.out.println(" class Student iNo:"+iNo+" strName:"+strName);

}

}

public class Test

{

public static void main(String[] args)

{

System.out.println("--------------------intance of class Person: obj------------------------");

Person obj=new Person(2,"weng");

System.out.println(" obj.iNo:"+obj.iNo+" obj.strName:"+obj.strName);

obj.Show();

System.out.println("--------------------------intance of class student:obj2 ---------------------");

Person obj2=new Student(5,"weng fu guo");

System.out.println(" obj2.iNo:"+obj2.iNo+" obj2.strName:"+obj2.strName);

obj2.Show();

}

}

//在java中的结果

/*

--------------------intance of class Person: obj------------------------

class Person

obj.iNo:2 obj.strName:weng

class Person iNo:2 strName:weng

--------------------------intance of class student:obj2 ---------------------

class Person

class Student

obj2.iNo:111 obj2.strName:class person

class Student iNo:5 strName:weng fu guo

Press any key to continue

*/

//---------------------- c++ 中的例子----------------------------

#include<iostream>

#include<string>

using namespace std;

namespace wfgA002

{

class Person

{

public:

int iNo;

string strName;

public:

Person(int no,string name)

{

cout<<"class Person"<<endl;

iNo=no;

strName=name;

}

public:

virtual void Show()

{

cout<<" class Person iNo:"<<iNo<<" strName:"<<strName<<endl;

}//end functin Show()

};// end class Person

class Student:public Person

{

public:

int iNo;

string strName;

public:

Student(int no,string name):Person(111,"class Person")

{

cout<<" class Student"<<endl;

iNo=no;

strName=name;

}

public:

void Show()

{

cout<<" class Student iNo:"<<iNo<<" strName:"<<strName<<endl;

}

};

}// end namespace wfgA002

using namespace wfgA002;

//主涵数

void main()

{

Person *obj,*obj2;

cout<<"-------------------instance of class Person:obj-----------------------"<<endl;

obj=new Person(2,"weng");

cout<<" obj->iNo:"<<obj->iNo<<" obj->strName:"<<obj->strName<<endl;

obj->Show();

cout<<"------------------instance of class Student:obj2----------------------"<<endl;

obj2=new Student(5,"weng fu guo");

cout<<" obj2->iNo:"<<obj2->iNo<<" obj2->strName:"<<obj2->strName<<endl;

obj2->Show();

}

/*

-------------------instance of class Person:obj-----------------------

class Person

obj->iNo:2 obj->strName:weng

class Person iNo:2 strName:weng

------------------instance of class Student:obj2----------------------

class Person

class Student

obj2->iNo:111 obj2->strName:class Person

class Student iNo:5 strName:weng fu guo

*/

// ---------------------C# 中的例子---------------------------

using System;

namespace wfgA003

{

// 基类Person

class Person

{ public int iNo;

public string strName;

public Person(int no,string name)

{

System.Console.WriteLine("class Person");

iNo=no;

strName=name;

}

public virtual void Show()

{

System.Console.WriteLine(" class Person iNo:{0} strName:{1}",iNo,strName);

}

}

//子类Student

class Student:Person

{

new public int iNo;

new public string strName;

public Student(int no,string name):base(111,"class Person")

{

System.Console.WriteLine("class Student");

iNo=no;

strName=name;

}

public override void Show()

{

// 显示iNo和strName的值

System.Console.WriteLine(" class Student iNo:{0} strName:{1}",iNo,strName);

}

}

class Class1

{

// 主涵数

static void Main(string[] args)

{

System.Console.WriteLine("--------------------instance of class Person------------------------");

Person obj=new Person(2,"weng");

System.Console.WriteLine(" obj.iNo:{0} obj.strName:{1}",obj.iNo,obj.strName );

obj.Show();

System.Console.WriteLine("------------------------instance of class Student--------------------");

Person obj2=new Student(5,"weng fu guo");

System.Console.WriteLine(" obj2.iNo:{0} obj2.strName:{1}",obj2.iNo,obj2.strName);

obj2.Show();

}

}

}

/*

C#中的结果

--------------------instance of class Person------------------------

class Person

obj.iNo:2 obj.strName:weng

class Person iNo:2 strName:weng

------------------------instance of class Student--------------------

class Person

class Student

obj2.iNo:111 obj2.strName:class Person

class Student iNo:5 strName:weng fu guo

*/

从以上这三种语言的例子中。我想足以说明结论。

借以上例子在此我还是想强调一下。无任是哪种OOPL都是具有相同核心的OOP思想只是实现不同而以。

所以说对于我们来说最重要的是彻底搞懂OOP思想。如果面向对象思想理解的很透彻了。那么无任学习

哪种OOPL都不再是难事了。这样我们在实践中采用那种OOPL都没有关系。只要学习一下相应的类库加上看一本OOPL语法书

因为有面向对象思想的前提,所以对于学习语法将变的很容易了。

也就能很快运用于实践中去了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有