浅谈面向对象与面向过程 ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ---------- 面向对象是相对于面向过程而言的,它们是两种不同的思想。面向过程强调的是功能和行为。而面向对象是把功能封装到对象里,强调的是具备功能的对象。面向对象是基于面向过程而言的,是一种符合人们思考习惯的思想,他能将复杂的问题简单化。可以将程序员从执行者转换成为指挥者。 动物分类学家根据动物具有的特征,把具有相同特征和行为的动物归为同一个类,一个类描述的是动物具备些特征和行为。如狮子,老虎,豹子有相同的特征和行为,把它们这些相同的特征和行为抽象出来就形成了猫科动物这一类;狼和狗也具有相同的特征和行为,把它们的相同特征和行为抽象出来就形成犬科这一类。老虎和狮子都是基于猫科类的动物实体;狗和狼是基于犬科类的动物实体。面向对象吸取了这种分类思想,把由类派生出来的实体叫实做例对象。 面向对象的开发的过程:创建对象,使用对象, 指挥对象做事情。 举一个生活中的例子阐述一下面向对象的思想:我现在肚子饿了,我又不想自己做饭,也不想跑下楼出去买吃的,于是我灵机一动,可以利用学过的面向对象的思想解决问题,一个电话找外卖,五分钟之后一碗番茄鸡蛋炒饭就送到了面前。这个例子中送餐员就是一个对象,他具备送餐的功能,我找到这个送餐员调用的送餐功能就行。至于饭是怎么做的,是怎么送过来的,我都不用知道,我只要知道送餐员有送餐功能就像。这样我就有一个执行者变为了一个指挥者,我不用自己做饭,我指挥送外卖的送饭过来就行。 我们学过的C语言是面向对象的程序设计语言,java是面向对象的程序设计语言,下面通过程序说明一下它们的不同。 需求:求10个整数的最大值,最小值,平均值以及给这10个数排序。 C语言 思路:创建4个函数分别是求最大值,最小值,平均值,排序 主函数依次调用者这几个函数求得结果。 C程序: #include <stdio.h> void main() { int max(int a[],int n);//声明要调用的求最大值函数 int min(int a[],int n);//声明要调用的求最小值函数 int aver(int a[],int n);//声明要调用的求平均数函数 void sort(int a[],int n);//声明要调用的排序函数 int a[10]={1,8,3,2,5,6,7,4,9,10}; int x; printf("the max=%d\n",max(a,10));//调用函数求最大值函数并打印结果 printf("the min=%d\n",min(a,10));//调用函数求最小值函数并打印结果 printf("the aver=%d\n",aver(a,10));//调用函数求平均值函数并打印结果 sort(a,10); //调用函数排序函数 printf("the sort:"); for(x=0;x<10;x++) { printf("%d ",a[x]); } } //求最大值函数 int max(int a[],intn) { int x; int max=a[0]; for(x=0;x<n;x++) { if(a[x]>max) max=a[x]; else continue; } return max; } //求最小值函数 int min(int a[],intn) { int x; int min=a[0]; for(x=0;x<n;x++) { if(a[x]<min) min=a[x]; else continue; } return min; } //求平均值函数 int aver(int a[],intn) { int x; int sum=0; int aver; for(x=0;x<n;x++) { sum=sum+a[x]; } aver=sum/n; return aver; } //排序函数 void sort(int a[],intn) { int x,y,temp; for(x=0;x<n-1;x++) { for(y=0;y<n-1-x;y++) { if(a[y]>a[y+1]) { temp=a[y]; a[y]=a[y+1]; a[y+1]=temp; } } } } Java语言: 思路:创建一个类;类里面封装了求最大值,最小值,平均值,排序等方法。在主函数中创建类的实例对象,调用类中方法求得结果。 Java程序: class Test//定义类 { //类中求最大值方法 public int getMax(int[] arr) { int max = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x]>max) max= arr[x]; } return max; } /* 获取最小值。 */ public int getMin(int[] arr) { int min = 0; for(int x=1; x<arr.length; x++) { if(arr[x]<arr[min]) min= x; } return arr[min]; } //对数组进行排序 public void sort(int arr[]) { for(int x=0;x<arr.length-1;x++) { for(int y=0; y<arr.length-x-1; y++) { if(arr[y]>arr[y+1]) { int temp=arr[y]; arr[y]=arr[y+1]; arr[y+1]=temp; } else continue; } } } //排序方法 public int getAver(int arr[]) { int sum=0; for(int x=0;x<arr.length;x++) { sum=sum+arr[x]; } int aver=sum/arr.length; return aver; } } class ArrayTest { public static void main(String[]args) { Test a=new Test();//创建类的实例对象 int[] arr ={5,1,6,4,2,8,9,3,10,7}; int max = a.getMax(arr);//通过了对象调用类中的求最大值方法 int min = a.getMin(arr);//通过了对象调用类中求最小值方法 int aver=a.getAver(arr);//通过了对象调用类中求平均值方法 System.out.println("max="+max); System.out.println("min="+min); System.out.println("aver="+aver); a.sort(arr);//通过了对象通过了对象调用排序方法 for(int x=0;x<arr.length;x++) { System.out.print(arr[x]+" "); } } } |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |