##面向过程
面向过程的语言也称为结构化程序设计语言,是高级语言的一种。再面向过程程序设计中,问题被看作一系列需要完成的任务,函数则用于完成这些任务,解决问题的焦点集中于函数。面向过程思想的主要观点是采用自顶向下、逐步求精的程序设计方法,使用三种基本控制结构构造程序,即任何程序都可由顺序、选择、循环三种基本控制结构构造。(较为常见的面向过程设计语言如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();
}
}
}