面向过程和面向对象思想比较

##面向过程
面向过程的语言也称为结构化程序设计语言,是高级语言的一种。再面向过程程序设计中,问题被看作一系列需要完成的任务,函数则用于完成这些任务,解决问题的焦点集中于函数。面向过程思想的主要观点是采用自顶向下、逐步求精的程序设计方法,使用三种基本控制结构构造程序,即任何程序都可由顺序、选择、循环三种基本控制结构构造。(较为常见的面向过程设计语言如C语言)
##面向对象
面向对象是相对于面向过程来讲的。面向对象思想把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式,可以让开发者以直观的感受进行枯燥的程序开发。较为常见的面向过程设计语言如java)
##二者代码示例理解:
问题描述:使用两种思想分别在控制台打印相同图形,如下所示(比较两种方式实现差异)

* * *     * * * 
* *         * * 
*             * 
                
                
*             * 
* *         * * 
* * *     * * * 
面向过程:
public static void main(String[] args) {
		long start = System.currentTimeMillis();
		int n = 10;
		int[] arr = new int[n*2+2];
		int ii = n;
		int jj = 0;
		for(int i=0; i<arr.length; i++) {
			
			if(i < n) {
				for(int j=0; j<arr.length; j++) {
					if(j < ii) {
						System.out.print("*");
					}else if(j >= (arr.length - ii) && j < arr.length) {
						System.out.print("*");
					}else {
						System.out.print(" ");
					}
				}
				ii--;
				System.out.println();
			}
			if(n <= i && i <= (arr.length-1-n)) {
				System.out.print(" ");
				System.out.println();
			}
			if(i > (arr.length-1-n)) {
				for(int j=0; j<arr.length; j++) {
					if(j <= jj) {
						System.out.print("*");
					}else if(j >= (arr.length-1-jj)) {
						System.out.print("*");
					}else {
						System.out.print(" ");
					}
				}
				jj++;
				System.out.println();
			}
		}
		System.out.println("time:"+(System.currentTimeMillis()-start));
		System.out.println("-----------------------------");
	}
面向对象:
public class OOB {
	public static void main(String[] args) {
		OOB ps = new OOB(10);
		long start = System.currentTimeMillis();
		ps.setSymbols();
        ps.print();
        System.out.println("time:"+(System.currentTimeMillis()-start));
	}
	private int n = 1;
    private int length;
    private char[][] matrix;
    private char symbol = '*';
 
    public OOB(int n) {
        this.n = n;
        this.length = n * 2 + 2;
        this.matrix = new char[this.length][this.length];

        this.initArrary();
    }
 
    // 初始化数据都为空白符号
    private void initArrary() {
        for (int i = 0; i < this.length; i++)
            for (int j = 0; j < this.length; j++)
                this.matrix[i][j] = ' ';
    }
 
    // 按条件设置符号
    // 因为有很明显的对称关系,直接2层循环搞定
    // 所以设置方式如函数体内的描述
    public void setSymbols() {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n - i; j++) {
                //从第0行开头开始设置
                this.matrix[i][j] = this.symbol;
                 
                //从第0行末尾开始设置
                this.matrix[i][this.length - j - 1] = this.symbol;
                 
                //从最后一行开头开始设置
                this.matrix[this.length - i - 1][j] =  this.symbol;
                 
                //从最后一行末尾开始设置
                this.matrix[this.length - i - 1][this.length - j - 1] =  this.symbol;
            }
        }
    }
 
    public void print() {
        for (int i = 0; i < this.matrix.length; i++) {
            for (int j = 0; j < this.matrix.length; j++) {
                System.out.print(this.matrix[i][j]);
                System.out.print(' ');
            }
            System.out.println();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值