一些OO练习

div+css+jquery仿写HTML京东首页的练习及一些关于oo css的总结 前言 前几天看b站上极客学院的web前端开发第二部分时了解到OO CSS(面向对象的css)这个名词,当时不太懂,想着练习一遍基础来更深入的理解,便用了3天左右练习写了个京东首页的静态页面,实现了一些基本的结构和功能。 (OO CSS大致是要注意一些规范或一些东西,截个图以便随时翻阅) OO CSS注意事项: 效果 PS:因为代码有些冗长就分一些部分来叙述 PS:整个工程我在文章开头分... 阅读详情

表达式:1 + 2 * 3

Expression = {literal | Expression}

interface Expression { int eval();}

子类 LiteralExpression, CompoundExpression,后者分运算符表达式OperatorExpresion,函数表达式FunctionExpression,运算符表达式又分单目双目

双目运算符表达式,有2个operand,类型是Expression

abstract class DoubleOperandExpression  implments Expression{
	Expression  firstOperand;
	Expression secondOperand;
	public abstract operatorFunc(Expression a, Expresson b);
	public int eval() {
		return operatorFunc(first Operand, secondOperand);
	}
}
class AddOperatorExpression extends DoubleOperandExpression {
	public int operatorFunc(Expression a, Expression b) {
		return a.eval() + b.eval();
	}
}

机场调度系统

类:ControlTower, Plane, Schedule, Lane

关系:ContorlTower 和Lane以及Schedule都是一对多的关联关系,Schedule和Plane是一对一关系,Schedule 单向关联 Plane, Plane作为一个类,schedule不是它的固有属性。Plane对Lane有一对一的依赖关系(局部变量)

驱动控制:主动对象就是ControlTower,根据schedule顺序调度Plane,给Plane发命令消息

class ControlTower {
	PriorityQueeue<Schedule> schedules;
	Lane[] lanes;
	Object signal = new Object();
	public addSchedule(Schedule s) {
		schedules.offer(s);
		signal.notify();
	}
	public cancelSchedule(Schedule s) {schedules.remove(s);}
	public void run() {
		while (!airPort_shutdown) {
			Schedule s = schedules.poll(); //bloked if no schedule
			while (s.time > Now()) {
				signal.wait(Now() - s.time);
				if (s.time > schedules.peek().time) {
					schedules.offer(s);
					s = schedules.poll();
				}
			}
			Lane lane = getFreeLane();
			Plane plane = s.plane;
			plane.moveTo(lane);
			plane.takeOff();
			releaseLane(lane);
		}
	}	
	public addSchedule(Schedule s) {schedules.offer(s);}
	public cancelSchedule(Schedule s) {schedules.removde(s);}
}

3 货车追踪系统Truck Tracking System

类:Truck, 送货单,TrackingSystem,  Log, DB

关系:Truck 一对多 送货单, TrackingSystem 一对多 Truck,一对一DB

消息交互:Truck 定时向 System发送 Log (TruckId, GPS, time),  后者SaveToDB

工作人员向system发送查询请求 List<Log>query(truckId, startTime, endTIme)

驱动控制:Truck是一个主动对象:处理自己携带的送货单,直到处理完毕。

TrackingSystem:接受truck和 查询人员的查询消息,

4 21点游戏

庄家轮流问每个人要不要,直到所有人都不要,然后判断谁赢,然后下一次游戏。

类庄家Game21Points, Player

数据都封装在庄家类里

消息互动:庄家问Player要不要,庄家通知Player win

驱动控制:只有庄家是主动对象,单线程。

Class Game21Points {
	boolean in[NUM_PLAYER];
	int points[NUM_PLAYER];
	Player players[NUM_PLAYER];
	Deck deck;
	void run () {
		while (!closed) {
			for (int player = 0; player < NUM_PLAYER; ++player) {
				in[player] = true;
				points[player] = 0;
			}
			int numOfIn = NUM_PLAYER;
			deck.shuffle();
			while(numOfIn > 0) {
				for (int player = 0; i < NUM_PLAYER; ++player) {
					if (in[player] == true) {
						if (players[i].needMore()) {
							points[player] += deck.next();
							if (points[player] > 21) {
								in[player] = false;
								points[player] = 0;
								--numOfIn;
							}
						}
						else
							in[player] == false;
					}
				}
			}
			judge();
		}
	}
	void judge(){
		int player = getMax(points);
		player.win();
	}
}

Cache

对象:Cache(服务接口类,也是(Mediator),Item(封装用户data)Index(负责查找data位置),Store,负责根据位置取出Item,再返回给用户。

interface Cache<K, V> {V get(K key);  void put(K key, V value);}

interface Item<K,V>  {K getKey(); V getValue();}

interface Index { Location getLocation(K key); void removeIndex(K key); void updateIndex(k key);}

interface Store { Item takeOut(Location pos);   Item get(Location pos); void append(Item item) }

interface CacheWithExpireStategy {}

关于最精髓的LRU策略是封装到Store里还是由上层Cache类负责?原则是:单一责任。Store的责任就是简单的仓库管理操作,这样不同的过期策略只是建立在store上层的策略。整体中如果有部分是可变的,那么这个可变的部分就应该独立出来作为一个组件,每个组件都是不变的,单一行为的。可变的部分是通过多态实现,可以插拔不同组件,但是组件是不变的,对修改关闭。

Cache和不同策略啥关系,可以继承,比如LRUCache, LFUCache, 也可以委托(聚合) Cache委托内部封装的LRUStrategy去实际操作。这是经典泛化 vs 聚合的问题,前者是结构层面的,后者是动态的,也就是一个Cache可以支持不同的策略


凡是涉及数据管理的系统,都可以用图书馆来考虑,都要面临图书的位置查找和实际摆放两个问题,对应的两大组件就是就是index + store,所有的数据管理系统都包含这两部分。


邮件系统

思路,不像电梯那样有现实世界的对应,先use case 分析

系统边界:

1)外埠邮件收发:向外埠server投递,接受外部server的投递

2)邮件客户端收发:收信,发信

3)webMail

结构:

核心是一个目录和文件管理系统,加上不同的访问渠道。就是一个典型的基础API 外加上层应用的结构。








App渗透 - 人脸识别登录绕过 一、APP抓包和逆向破解加密算法打开APP是一个登录框抓包后发现参数被加密了使用Jadx脱源码发现,并没有加壳也没有混淆,运气很好根据经验,先搜索Encrypt、Decrypt等关键字,发现在Common.js中有一个encryptData函数定位过去,一套加解密算法都写好了放在这放到浏览器console里面调试,果然没错二、寻找注入点首先测试了一下注入明文:{"userName":"TEST'... 阅读详情

相关推荐

endnote让参考文献整整齐齐

这篇文章主要是针对利用 endnote 插入参考文献时,参考文献第一行和后面的行对不齐的问题 下面是示意图 可以看到我们的参考文献对的整整齐齐的,比较好看。 下面介绍具体步骤 1、打开endnote。编辑我们使用的参考文献样式。我这儿是叫 ZZ_MODIFIED_GEEBINF 复制 2、找到布局,每个参考开头,将光标放在在参考开头后面,点插入字段,制表符 3、右下角悬挂式输出哪儿选择全部段...

雾隐雾现的至渝博客 5万+

ABAP OO练习

继续我们的看实例学习abap面向对象编程.在此次的例子中,我们以雇员的工资为蓝图,设计一个程序,然后再一步一步的改进我们写的程序,使其有更好的扩展性以及维护性.该例中所使用的基类是employee类,其子类包括:boss类,不管工作多长时间,他总是有固定的周薪(好爽!).销售员类commission worker,他的收入是一小部分工资加上销售额的一定提成.计件工类piece...

weixin_33858336的博客 350

Ceres Solver:从入门到使用

Ceres Solver是谷歌开源的C++非线性优化库,能够解决有约束或无约束条件下的非线性最小二乘问题。2010年之后大量的运用在谷歌的产品开发中,尤其在谷歌开源的cartographer中被大量的使用。 ceres可以在Linux,Windows,macOS,Andrioid,IOS系统进行安装使用,详情可查看下方的官网链接。 Ceres Solver 官网:http://ceres-solver.org/

非晚非晚的博客 1万+

OO的乒乓球练习 = =

问题来自:http://bbs.spoto.net/viewthread.php?tid=15658 引用chendabian发表于 2008-8-4 22:29:【两个乒乓球队进行比赛】两个乒乓球队进行比赛,各出三人。甲队A,B,C,已队x,y,z,A说他不和x比,C说他不和x,z 比,编程找出三队赛手的名单。 请问这道题 该怎么写??? 毫无头绪的乱写……大略流程是{创建选手对象a

linyq@BambooFan ~ 817

从零构建MAVLink通信:PX4飞控与QGC的协议握手全解析

本文详细解析了PX4飞控与QGC地面站通过MAVLink协议进行通信的全过程,重点介绍了航点传输协议的状态机设计、INT类型消息的优化优势以及异常处理与调试技巧。通过实战案例和性能优化建议,帮助开发者高效构建无人机通信系统,提升数据传输效率与稳定性。

weixin_29209805的博客 504

f103vet6 SD卡SDIO+DMA配置避坑指南:从初始化卡死到稳定读写的全流程解析

本文详细解析STM32F103VET6芯片SD卡SDIO与DMA配置中的常见问题,从初始化卡死到读写不稳定的全流程解决方案。重点分析总线宽度配置、时钟分频调整及DMA通道管理技巧,帮助开发者避开常见陷阱,实现稳定高效的数据存储。

u0v1w2x3的博客 666

Java练习:OO.Objects_references

.

yqj2065的博客 489

【大模型应用开发-大模型知识】(二)大模型分类和常见大模型

目前包含 Claude 和 Claude-Instant 两种模型可供选择,其中 Claude Instant 的延迟更低,性能略差,价格比完全体的 Claude-v1 要便宜,两个模型的上下文窗口都是 9000 个token(约 5000 个单词,或 15 页)它的目标是“更安全”、“危害更小”的人工智能。Google 还开发了多种 PaLM 的改进版本。更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。

1万+

[SAP ABAP] OO ALV报表练习1

本文主要讲解SAP ABAP中的OO ALV报表练习

Hudas的博客 1259

RFC 字符码转换深度解析:Unicode、非 Unicode 与 MDMP 系统的协奏

老版本 MDMP 系统不上传自定义映射时,Unicode 端会落回“预配置列表”。列表里可见西欧 1100、日文 8000、中文 8400 等经典编号。若需强制覆写映射,可在 SM59 ➡Unicode页签启用,或直接勾选作为兜底。字符编码问题常“潜伏”多年,一旦旧系统升级或新增语种便集中爆发。掌握 RFC code page 转换机理、灵活运用 SM59 选项、在早期对 LANG 字段和字段长度进行治理,是根治乱码与 short dump 的关键。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 222

Android系统去掉长按webview界面弹框中的分享功能

Android 系统去解决长按显示内容,去掉分享功能,不论那个界面,是所有界面都需要满足。如果仅仅去掉系统自带的,那么系统来处理如果客户自定义,部分App自定义的菜单项,不是调用系统的,那么还是需要应用去解决的。之前做过Editext,其实还需要去TextView,最难点的就是WebView中的HTML了 去分享功能了。WebView中涉及到分享功能菜单的界面,/***//***//***//***//***//***//***//***//**

十年饮冰,难凉热血 1019

OO第四次博客

  这是最后一个单元的OO练习。我个人感觉这两次作业相比于前三个单元而言,主要的难点在于理解UML相关概念。作业的要求里面将很多内容做了简化,尤其是第二次作业,避免了一些繁琐的处理。总的来说这两次作业我感觉还是比较顺利的。 一.两次作业的架构设计   两次作业的架构其实差不多,第二次作业可以理解为第一次作业的拓展版本,增加了顺序图和状态图的一些查询,增加了类图的检查。我的思路是预先计算出所有需...

weixin_30745553的博客 106

Windows10环境下激活虚拟环境报错【source : 无法将“source”项识别为 cmdlet、函数、脚本文件或可运行程序的名称】

在使用Django创建Web程序前,需要创建一个虚拟的工作环境,在使用【source ll_env/bin/activate】命令激活虚拟环境时报错:source : 无法将“source”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1 字符: 2。

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1万+

简单的面向对象(OO)练习

学生设备管理系统: 每个学校都有很多班级,每个班级都有很多设备。(设备可以更新)每个设备都有购买价格,每种设备都有折旧率(如每年折旧10%) 按班级进行统计,指定的班级有多少的设数量? 按班级进行统计,当前时间,指定班级的设备价格总和?(考虑折旧) 统计学校所有设备总数,所有设备价格总和? 那么...

ailangling0844的博客 253

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C++练习实例———贪吃蛇(OO思想)

这是一款在vs上直接控制台输出的贪吃蛇游戏,没有使用任何图形库。游戏具有多个界面,状态转换如下: 上图的流程主要在main函数中体现,下面直接上代码: Position类,用来记录游戏中的坐标位置: #include&lt;iostream&gt; using namespace std; #ifndef POSITION_H #define POSITION_H class Po...

洗头冠军的博客 834

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OO:CL_SALV_TABLE练习

*&amp;---------------------------------------------------------------------* *&amp; Report  ZTEST025 *&amp; *&amp;---------------------------------------------------------------------* *&amp; *&amp; *...

qq_31941819的博客 696

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OO第四单元总结暨OO课程总结

一、总结本单元两次作业的架构设计 第一次作业完成类图Model,第二次作业在覆盖第一次作业的基础上,加入状态图StateMachine和协作图Collaborations部分。 先放两次作业的类图 第一次作业 第二次作业 下介绍自顶向下介绍架构设计: 为了完成类图,状态图,协作图,我建了UmlModel,UmlMachine,Umlcollaboration三个包来实...

weixin_30500105的博客 152

OO完课总结

本单元两次作业的架构设计 第一次作业 根据大佬给出的UmlElement类型使用指南,先自行理解了用 java模拟uml的原理,并依照原理进行了代码编写,下面是第一次作业的架构设计。 首先是作业要求实现的两个类,分别是main类以及继承UmlInteraction的MyUmlInteraction类。MyUmlInteraction里面实现了UmlInteraction要求的所有函...

weixin_30788239的博客 72

phonics-7

Beginning Short Vowels: a, e, i, o, u Aa: alligate Directions: Say the sound for the letter Aa. (The short vowel sound for Aa is heard at the beginning of the word alligator.) Color the pictures tha

不以己悲的博客 1134

猿人学web - 第一题 js 混淆 - 源码乱码

猿人学web - 第一题 js 混淆 - 源码乱码

weixin_49859373的博客 475

OO,OO以后,及其极限

1、什么是软件开发?  软件开发的过程就是人们使用各种计算机语言将人们关心的现实世界映射到计算机世界的过程;   现在的计算机的数学理论基础是由计算机的开山鼻祖,大名鼎鼎的图灵于1937年提出的图灵机模型。 随后不到十年,电子计算机就诞生了(1945)。(埃尼亚克)   我们都知道,它当时的主要任务之一就是用于导弹弹道轨迹的计算。当时的软件开发(如果可以称之为软件开发的话)与现在的...

dechen6073的博客 3453

oo总结

架构设计 第一次作业 需求分析 这次作业是针对类中的一些元素,如属性,操作,继承,实现等查询,所以这次的架构我们的第一感觉,按照正常的结构在类中存属性操作,继承的父类和实现的接口等。 具体功能 为了实现这次功能,我大致把这次作业分为了这样几个部分。 首先是初始化,如何在构造函数中,把UmlElement的数组初始化为我们设计好的结构,这一部分也是最难的部分。 第二是指令实现的模式,大致的模式...

weixin_33895475的博客 247

OO思维(零) 写在前面

我想在正题之前简单的讲几句关于这篇文章的事。最近看了不少关于OO的文章,大部分给人的感觉还是太理论,太教条,而且非常形式化。我写这篇文章的时候特别注意到这个问题, 最好尽量的不要把它讲的过于理论化。这里主要说的是我个人对OO的一些理解和看法。 认为学好C++学好JAVA就自然而然拥有了OO思维。难道仅靠些语法就能设计出高质量的OO模型了?认为面向过程已经被淘汰了,使用OO写出来软件就一定具有更高的

nonocast 2298

et200sp模块接线手册_什么是PLC安全模块 1oo1 1oo2 评估?

在配置FDI安全输入模块时,我们会遇到1oo1评估(1oo1 evaluation)或者1oo2评估(1oo2 evaluation)。如下图所示的西门子ET200SP的4/8 F-DI模块的参数配置,有关于传感器评估的选择,可选项包括:1oo1 evaluation和1oo2 evaluation到底1oo1或者1oo2代表什么意思呢?这个要从安全的等级说起。1oo1中的“oo”是“out of...

weixin_34832116的博客 5881

什么是OO,为什么要OO,OO能干什么

    OO是一个古老的话题,最近在设计一个完整的应用系统的时候“被各种拍砖”后体会到OO真正给我们带来的一些好处。       首先,OO可以提高我们的沟通效率。你在表达某种技术、体系的时候,自己十分明白,但是要知道在初始阶段特别是第一次的时候,你团队中其他的成员对此的了解仅相当于int a=1;int b=2;Sysout(a+b);如果此时,你对他们说反射,动态代理是怎么怎么实现。你觉得...

Qnz - 菜鸟一枚,请各位不吝赐教,提出宝贵的意见和建议。 1841

写C也OO

以前看见有人写用C来OO,但文章看起来总是不知道所云,学不要什么东西,其实在公司开发的时候,很多C程序还是按OO的思想来开发的。于是总结一下,也希望讨论一下C的OO方法。C其实是一种很自由的语言,而OO是一种思想,同时也是一种限制,只要自己在C中加上这种限制,也能在C中实现一定程度的OO。比如,OO中最重要的是封装。C最大的特点就是开放。但要是有封装的思想来写C,也未尝不可。在C++中,我们的类这

小四日志 927
上一篇: 电梯系统OO设计
下一篇: 算法也要面向对象OO
binling
博客等级 码龄25年 21粉丝 235原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值