0718(011天 面向对象基础01)

0718(011天 面向对象基础01)

每日一狗(边牧coffee的一家

面向对象基础

复习题

字母频数统计

​ 统计输入字符串的各个字母出现的频率

package com.ketang;

public class T05词频统计 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String ss = "1415926535 8979323846";
		char[] carr = new char[27];
		int[] narr = new int[27];
		int index = 0;
		// 分类计数
		for (int i = 0; i < ss.length(); i++) {
			char cc = ss.charAt(i);
            // 统计输入的字母的
//			if (!((cc >= 'A' && cc <= 'Z') || (cc >= 'a' && cc <= 'z'))) {
//				continue;
//			}
			// 统计数字字符串中字符出现的次数
			if (!(cc >= '0' && cc <= '9')) {
				continue;
			}
			int tmpIndex = index(carr, cc);
			if (tmpIndex >= 0) {
				narr[tmpIndex]++;
			} else {
				carr[index] = cc;
				narr[index] = 1;
				index++;
			}

		}
		// 冒泡
		for (int i = 1; i < index; i++) {
			for (int j = 0; j < index - 1; j++) {
				if (narr[j] < narr[j + 1]) {
					int tmpN = narr[j];
					narr[j] = narr[j + 1];
					narr[j + 1] = tmpN;

					char tmpC = carr[j];
					carr[j] = carr[j + 1];
					carr[j + 1] = tmpC;
				}
				if ((narr[j] < narr[j + 1]) && (carr[j] < carr[j + 1])) {
					int tmpN = narr[j];
					narr[j] = narr[j + 1];
					narr[j + 1] = tmpN;

					char tmpC = carr[j];
					carr[j] = carr[j + 1];
					carr[j + 1] = tmpC;
				}
			}
		}
		for (int i = 0; i < index; i++) {
			System.out.println(carr[i] + ":" + narr[i]);
		}
	}

	public static int index(char[] arr, char c) {
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] == c) {
				return i;
			}
		}
		return -1;
	}

}

在这里插入图片描述

1. 面向对象入门

1.1 三大特性(考题)

  • 封装

    • 隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同是保护的数据
    • 隐藏功能的具体实现细节,使用者只需要关注功能的使用,不需要关心实现细节
  • 继承

    • 为了重用父类的代码,同时为实现多态性做准备
    • 关键字extends,子类可以继承父类的成员变量和成员方法
    • java采用单继承
  • 多态(发送消息给某个对象,该对象根据不同的消息来自行决定响应何种行为)

    • 一个事物可以有多种表现形式
    • 常见体现形式
      • 父类型引用子类对象
      • 方法重写
      • 方法重载

1.2 面向对象和面向过程

面向过程式

  • 过程式的特性是以函数为中心,用函数作为划分冲虚的基本单位;数据在过程式设计中处于从属的位置

  • 过程设计的优点是易于理解和掌握,这种逐步细化问题的设计方法与大多数人的思维方式比较接近

  • 自上而下,要求设计者在开始是需要对解决的问题有一定的理解,然而在问题的比较复杂时,要做到这一点比较困难;当开发需求变化时,以前对问题的理解会变得不再适用

面向对象设计

  • 一种自下而上的程序设计方法,以数据为中心,类是表现数据的单位,是划分程序的基本单位
  • 由于自下而上的特性,允许开发者从问题的局部开始切入,在开发过程中逐步加深对系统的理解。需求的变化会作用到系统开发本身,形成一种螺旋式的开发方式
  • 类封装了数据,而类的成员方法作为其对外的接口,抽象的描述类,用来将数据和操作这些数据的方法放在一起,这就是面向对象设计方法的本质

对象就是用户自定义数据加上用户所需求对该数据的操作方法。

1.3 对象

构成要素

  • 属性

    • 用于存放对象的数据
  • 方法

    • 用于操作对象的属性

1.4 类

用编程语言对现实生活中的失误进行描述,通过类的形式来实现

  • 类是具有相同属性和操作的对象的抽象
  • 对象是类的抽象,类的实例化就是类
  • 类实际上是一种数据类型
    • 类是用于组合各种对象所有操作和属性的一种机制
    • 类是具有相同属性和行为的一组对象的集合
      • 类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性
      • 类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述
  • 类可以定义为数据和方法的集合,类也称为模板,因为它们提供了对象的基本框架
    • 一旦定义类后,就可以用这种新类来创建该类型的对象
      • 类就是对象的模板(template )
      • 而对象就是类的一个实例(instance)

高内聚低耦合

首字母大写,大写字母分词

一个文件只能有一个公共类,且公共类名称与文件名一样

类的分类:

  • 外部类的范围限定词可以使用无范围 限定词和public两种

  • 而内部类上可以使用4种范围限定

  • 对象抽象是类,类的具体化就是对象。
  • 类是用户自定义数据类型
class ClassName{
    类体;
}

1.5 消息和方法

  • 对象事件进行通信的结构叫做消息。(一个对象和另一个对象进行数据交互来实现某种需求)
  • 类中操作的实现过程叫做方法。


扩展小芝士

  • 指纹求间距
  • 高内聚、低耦合
  • java中没有地址概念(那个看起来像地址的字符是和地址相关的一个字符)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值