首页 > 其他分享 >面向对象的思想初步了解

面向对象的思想初步了解

时间:2022-11-14 11:15:22浏览次数:80  
标签:content String 思想 次数 nCount 初步 面向对象 public

面向对象和之前学的面向过程是2种不同的编程思想,两者的思维有较大的区别,下面将举例初步表现这两种思想的差异性

设计一个程序去统计字符串"want you to know one thing"中字母 o和n出现的次数


//实现对字符串中出现字符次数的统计


public class SplitTest{
	public static void main(String[]args){
		String str="want you to know one thing";
		int oCount=0;//记录o出现的次数
		int nCount=0;//记录n出现的次数
		String []result=str.split("");//按字符拆分
		for(String str1:result){
			if("o".equalsIgnoreCase(str1))
				oCount++;
			if("n".equalsIgnoreCase(str1))
				nCount++;
		}
		System.out.println("o出现的次数为"+oCount+"  n出现的次数为"+nCount);
	}
}
output:
o出现的次数为4  n出现的次数为4

自顶向下,逐渐细化,我们按着我们罗列的步骤去解决问题

举例说明2种思想
假如你是一个老板,有一天你要向属下指导工作,如果用面向过程的思想,你要指导属性先做什么 再做什么,然后又做什么,要告诉他解决问题的每一个步骤。但如果是面向对象的思维,首先万物皆是对象,属下肯定也是一个对象,然后分析这个对象(属性)具备的属性和行为。然后你发现有做这件事的能力就ok了。你不必去关系他具体怎么做,只用关系他有没有这个能力(行为)
其实这更符合现实,如果现实中的老板都要一步一步的指导属下怎么做,老板早就累死了吧。

用面向对象的思维改写程序


//实现对字符串中出现字符次数的统计

class StringUtil{
	private String content;//字符串内容
	public StringUtil(String content){
		this.content=content;
	}
	public void setContent(String content){
		this.content=content;
	}
	public String getContent(){
		return this.content;
	}
}
//对以上功能的延续
class StringCount extends StringUtil{//实现统计
	private int oCount=0;//记录o出现的次数
	private int nCount=0;//记录n出现的次数
	public StringCount(String content){
		super(content);
		handleContent(content);
		toString();
	}
	public void handleContent(String content){
		String[]str=content.split("");
		for(String str1:str){
			if("o".equals(str1))
				this.oCount++;
			if("n".equals(str1))
				this.nCount++;
		}
	}
	public String toString(){
		return"”n“出现的次数为:"+this.nCount+"”o“出现的次数为:"+this.oCount;
	}
	
	
}




public class SplitTest{
	public static void main(String[]args){
		String str2="want you to know one thing";
		
	    StringUtil st=new StringCount(str2);
		System.out.println(st.toString());//向上调用子类覆写的方法
		
		
	}
}
output:
”n“出现的次数为:4”o“出现的次数为:4

我们看出,我们通过分析对象,设计出符合要求的对象,从而调用对象的行为实现功能,我们如果将这种功能设置在一个类里,会使得类的属性显得不伦不类,从现实中讲不通该类有这种属性,所有该处使用了继承,分成两种类

但可以发现如果采用面向对象的思想实现这个功能,代码量比面向功能相比长了很多,显得啰嗦,但他的结构很清晰

参考:编程思想:面向过程和面向对象

标签:content,String,思想,次数,nCount,初步,面向对象,public
From: https://www.cnblogs.com/swtaa/p/16887970.html

相关文章

  • 面向对象
    类方法与静态方法类方法:类方法通过@classmethod装饰器实现,类方法与普通方法的区别是,类方法只能访问类变量,不能访问实例变量。因为添加classmethod后,self不代表实例,而代表......
  • python面向对象-继承
    对象继承单继承:即继承父类的属性方法 super()方法场景:既想用父类的__init__属性,又想用自己的__init__属性,如果不在子类中加这个函数,直接在子类写__init__,那么会重写父......
  • 《码出高效》Chapter2面向对象-读书笔记
    《码出高效Java开发手册》第2章面向对象OOP理念抽象封装继承多态抽象是程序员的核心素质之一,体现在对业务的建模能力,以及对架构的宏观掌控力。抽象是OO思想......
  • 量化投资之散户线的操作思想
    散户线定义:散户线越低,即股东数越少,筹码越集中,意味着庄家实力越雄厚、控盘程度越高;反之散户线越高,即市场股东数越多,主力控盘力度不够。那么问题来了。1、散户线越低是不是......
  • 编写C程序,实现链队列的下列功能: 1、设计一个虚拟界面,让用户选择操作(根据提示输入数据
    编写C程序,实现链队列的下列功能: 1、设计一个虚拟界面,让用户选择操作(根据提示输入数据)2、采用模块化编程思想,编写main函数和若干子函数(实现功能)3、队列的基本功能有:......
  • SpringBoot(一):初步认识SpringBoot
    一、SpringBoot是什么 在了解SpringBoot之前,我们需要先来回顾一下Spring。Spring是一个轻量级的WEB应用开发的框架,它的初衷是为了简化企业级应用开发的复杂性,说白了就是......
  • 面向对象的三大特征
    面向对象的三大特征封装该露的露,该藏的藏我们程序设计要求“高内聚,低耦合”,高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用......
  • 简述 flux 思想?(必会)
    简述flux思想?(必会)点击查看代码1、用户访问View2、View发出用户的Action3、Dispatcher收到Action,要求Store进行相应的更新4、Store更新后,发出一个"change......
  • 编写C程序,实现顺序栈的下列功能: 1、设计一个虚拟界面,让用户选择操作(根据提示输入数据
    编写C程序,实现顺序栈的下列功能: 1、设计一个虚拟界面,让用户选择操作(根据提示输入数据)2、采用模块化编程思想,编写main函数和若干子函数(实现功能)3、栈的基本功能有:创......
  • 【java八股】面向对象三大特征
    封装:把客观事务封装成抽象的一个类,并且类可以通过4个修饰限制符,把自己的数据和方法只让可信的类或者是对象来操作,对不可信的进行信息隐藏,对数据提供了保护,保证数据的......