黑马程序员技术交流社区

标题: 浅谈面向对象与面向过程 [打印本页]

作者: HM王琦    时间: 2012-12-10 01:11
标题: 浅谈面向对象与面向过程



                                                                                                  

浅谈面向对象与面向过程
                                             
------- <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]+" ");
  }
}
}





                                                                         


                                                 

                                                 







    由于IE浏览器升级禁用了alt+x快捷键,请用alt+q快捷键来快速进入写说说入口

正在加载中...











欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2