C++一些特殊的类的设计】的更多相关文章

在游戏开发中,游戏角色占了很大的篇幅,可以说游戏中所有的内容都是由主角所带动.这里就介绍一下角色类的设计和持久化. 一.角色类应用场景和设计思想 游戏中的角色类型不一而足,有不同的技能,有不同的属性等等.有些一个玩家只有一个角色,有些一个玩家可以有多个角色.这里就目前项目来描述一下角色类的构造,思路都是类似的. 早期我写角色类都是直接一个Class,然后想到什么属性就往里面添加,如果游戏过程中需要对属性的修改,逻辑判断也写在这个类中,这样必然导致类的庞大和臃肿,最后你自己也忘记了自己写在什么地方…
在上下班的路上,听几首自己喜欢的音乐来打发无聊的等公交车和地铁的时间是现代年轻人的常态.音乐作为最能鼓动人心的"语言",也成为了人们在互联网生活里占比例最高的消费活动之一,一款好看,功能又全面的音乐APP往往最打动用户的心. 在当下的互联网音乐服务中,真正算得上是音乐管理软件的是Apple Music.视觉设计精致,全平台统一,在欧美和古典音乐上资源非常丰富,是一流的音乐流媒体服务产品,也是笔者最常用的软件之一.最近也正好关注到,国民原型设计工具Mockplus举办了一场以音乐APP为…
JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager.getConnection(dbResource,username,password); // String sql = ""; //3.获得SQL处理语句 Statement statement = connection.createStatement(); PreparedState…
三层架构的学生管理系统是我们第一个稍微大型的项目:分层.一个解决方案多个Project,所以值得我们停下来好好审查审查. 1.测试SVN服务器地址 我们的作业要求学员创建自己的SVN服务器,并且将代码commit上去,然后讲师进行批改是从源码服务器上获取代码,继而review.这非常类似于敏捷开发中的同行审查.在企业中,我们一般也是这样做代码审查的. 既然要审查代码,那么第一件事情就是要把代码从学生的服务器上check out下来,所以我第一步就是找学生要刘同学的SVN服务器地址以及用户名.密码…
首先,不得不承认,这确实是类库设计的一个错误,所以"为什么"进行了这个错误设计并没有意义.但没有事物一诞生就是完美的,我们的Java只是反应的慢了一点,再慢了一点. 更何况,Date类等日期/时间API又不是只有这一个问题. Java8之前,日期/时间API的问题 在Java8之前,日期和时间相关的类存在诸多问题: Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义. java.util.D…
面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种优化,操作起来更加的方便,简化了过程. 对象: 是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则.计划或事件 .对象具有行为和属性. 类:实际上是一群具有相同特性(数据元素)和行为(功能)的对象的抽象就是类.因此,对象的抽象是类,类的具…
Program: 编程实现Person类,学生类的设计及其继承关系 代码如下: 定义抽象类Person 1 /* 2 * Description:建立抽象类 3 * 4 * Written By:Cai 5 * 6 * Date Written:2017-10-17 7 * 8 * */ 9 10 11 package resource; 12 13 public abstract class Person { 14 15 private String name; //姓名 16 private…
  利用Eclipse进行HBase应用开发时,至少需要确定三个配置信息,如下表所示: #hbase config #HMaster服务部署主机及端口号 hbase.master=hdp-wuyong:60010 #Zookeeper端口号 hbase.zookeeper.property.clientPort=2181 #Zookeeper服务部署主机信息 hbase.zookeeper.quorum=hdp-songjiang,hdp-lujunyi,hdp-wuyong 我们将以上信息配置…
本文代码:YoungHeart-Chapter-03.zip 没有基类的App都不是好App. 因为iOS使用的是mvc模式的开发模式,所以,业务逻辑基本都在每个页面相应的ViewController中.这些页面有很多相同的逻辑,所以,我们有必要设计一个BaseViewController基类,将这部分共有逻辑抽象到基类中. 具体是哪些相同的逻辑呢? 1)重新规划页面的生命周期——第4篇文章会专门介绍. 2)iOS处理内存警告——在讲到内存优化的时候,会介绍. 3)作为跳转器的目标页,接收传递来…
  一.设计一个只能在栈上分配空间的类 重写类的opeator new 操作,并声明为private,一个大概的代码如下: class StackOnly { public: StackOnly(){/*constructor*/} ~StackOnly(){/*destructor*/}; private: void *operator new(size_t size); };   int main() { StackOnly s; //正确用法,自动变量在栈上分配内存   StackOnly…
前端开发类 animate CSS 前端开发网 我爱CSS 大家网 W3School jQuery开发技术详解教程视频 jQuery中文社区 jQueryChina 网页设计类 禅意花园 CSS Downunder CSS Impress CSS New websitelaunchpad wpglobe UI Maker 平面素材类 站酷网 昵图网 书法字体 图萝网 素彩网 三联素材 flash类 牛图库 Pian Tou 68 flash flash 片头之家 jQuery JavaScrip…
使用执行速度缓存的程序可以大大提高程序,设计一个简单的缓存类并不需要太复杂的逻辑. 只需要一个简单的3接口. 存款对象 以一个对象 删除对象 阅读对象 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdXh5aGVhdmVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""> 读取对象的时候先读内存 内存没有就读文…
从本文开始,将正式进入JavaIO的简介 在继续javaIO系列的文章之前 可以过去看一下 本人博客上的设计模式中的 适配器模式和装饰器模式 这会对接下来的阅读大有帮助   本文是从逻辑上介绍整个的Java IO类家谱画像.   1.流   计算机以及互联网的世界发展不过短短几十年,但是这几十年却是日新月异 系统的复杂度也越来越高,程序设计语言的抽象程度也越来越高 但是无论如何都绕不开一个话题,那就是IO 之前已经介绍过,IO 就是输入 和 输出, 入和出是相对于应用程序来说的 而且,经常一个程…
Complex类 源码 #include <cmath> #include <iomanip> #include <iostream> #include <string> using namespace std; class Complex { private: double real, imaginary; public: Complex(double r = 0.0, double i = 0.0) : real(r), imaginary(i){};…
归一化设计 #继承同时具有两种含义 # 1.继承基类的方法,并且做出自己的改变或者扩展 # 2.声明某个子类兼容于某个基类,定义一个接口类,子类继承接口类,并且实现接口中定义的方法. # 实践中,继承的第一种含义意义并不很大,甚至常常是有害的,因为它使得子类与基类出现强耦合. # 继承的第二种含义非常重要,它又叫"接口继承" # 接口继承是指上是要求做出一个良好的抽象,这个抽象规定了一个兼容接口,使得外部调用者无需关心具体细节,可一视同仁的处理实现了特定接口的所有对象 # 这个程序设计…
此软件使用的数据库连接方式code first 由EF框架产生数据库. code first需要对模型类设计和实现.模型类是现实实体在计算机中的表示.它贯穿于整个架构, 负担着在各层次及模块间传递数据的职责. 模型类和数据库中的表(这里指实体表,不包括表示多对多对应的关系表)是一一对应的 在此软件中,模型类和表是一一对应的,并且模型类中的属性和表中的字段也是对应的. 在看模型类的代码前,先看一下系统的工程结构. 如上图所示,在初始阶段,整个系统包括3个主要的工程文件夹,它们的职责是这样的: co…
在Java中将String设计成不可变的是综合考虑到各种因素的结果,需要综合考虑内存.同步.数据结构以安全方面的考虑. String被设计成不可变的主要目的是为了安全和高效. 1)字符串常量池的需要 字符串常量池是Java堆内存中的一个特殊的存储区域,当创建一个String对象时,加入此字符串值已经在常量池中,则不会创建新的对象,而是引用已经存在的对象. 如下代码所示,将会在堆内存中只创建一个实际的String对象 String s1 = "abcd"; String s2 = &qu…
运动类APP是大家手机中必备的一款软件.如果说谁手机里没有任何涉及运动类APP,那只能说真的与时代脱轨了.近些年随着物质生活条件的改善,人们开始越来越重视自己的身体,所以也越来越多的人会进行身体锻炼. 尤其是像我们这种设计师,每天的工作就是坐在电脑前做产品定位分析.用户调研.业务需求分析.目标用户画像.用户需求分析.原型设计,交互设计文档等等.日常的运动更是必不可少.当然,今天不是来和大家说运动的重要性.接下来要做的是带领大家一起来分析和欣赏当今最佳一款运动类APP-Keep的设计,谁叫我这么热…
异常是程序在有bug时最直观的表现形式,不担心有bug存在,而担心bug埋没在大堆的代码中而发现不了. 这篇随笔简单谈谈从AggregateException类源码(http://www.projky.com/dotnet/4.5.1/System/AggregateException.cs.html)中窥出的.NET Framework类库设计的方式. 总结有以下几点: 1.特性的使用:DebuggerDisplayAttribute,SerializableAttribute 2.只读属性的…
# 面向对象遵循的原则: SOLID # S(Single Responsibility Principle) # 单一职责原则 # 一个类只负责一项职责 # 好处 # 易于维护, 写出高内聚的代码 # 易于代码复用 # 案例 # 我们之前写的计算器类 # 假设只包含加减乘除运算和结果打印 # 如果往后需要增加, 结果写入文件, 结果参与其他运算, 结果上传服务器... # 是不是每一次都需要去修改此类? 就导致这个类变得特别臃肿; 不利于维护和部分代码复用 # 解决方案 # 计算器只包含, 加…
经典的类设计分类 带指针类 不带指针类 Header文件的布局 #ifndef __COMPLEX__ #define __COMPLEX__ #include <iostream.h> class complex //前置申明 class complex { ...//类声明 } complex::function()...//类定义 #endif 类声明 class complex //class head { //class body public: complex (double r…
equals和HashCode都是用来去重的,即判断两个对象是否相等.如果是String类则我们直接用.equals()判断,如果是我们自己定义的类,需要有自己的判断方法,重写equals,如果是集合(HashSet.HashMap)判断加入的元素是否为重复,并且加入的元素是我们自己定义的类,这时用重写equals和HashCode两个一起判断:插入的元素是否相等(HashSet中),插入的key是否相同(HashMap中). 设计一个标准的实体类四大原则: 1.封装:属性私有化,提供get/s…
以前做设计的时候dao接口和它的实现了,这样子就不必写这么多的重复代码了.但由于对反射没有了解,除非依赖hibernate的其他组件,否则写不出来.不过,有了反射,我们可以通过泛型来实现我们想要做的功能了. 首先是接口: package com.sms.dao.base; import java.util.List; public interface BaseDao<T> { public void add(T entity) throws Exception; public void del…
具体类依赖于抽象类,而非抽象类依赖于具体类.这样做有利于一个抽象类扩展多个具体类. 开放封闭原则:对扩展开放,对修改封闭. 1.永远保持数据私有 保持数据的私有是设计类时,必须重点考虑的问题.保持私有的数据有利于封装.虽然为了保持数据的私有,需要编写设置器与访问期,但这比起不是数据私有要安全的多. 2.永远初始化数据 Java不提供对本地变量的初始化,但它会初始化对象中的实力字段.在设计类时尽量不要依赖于系统的默认值,最好明确的初始化变量.可以通过赋值或构造器对变量进行初始化. 3.不要在一个类…
要实现Rational类的加减乘除,要实现其可比较性,要覆盖toString()方法,要实现不同数据类型的转换等. package chapter14; public class Rational extends Number implements Comparable { private long numerator=0; private long denominator=1; public Rational(){ this(0,1); } public Rational(long numer…
大纲: 在Visio里,包和类的关系是包含关系,将类拖入包的文件夹之后,关系就建立了,二元关联符号可以设置为:聚合.合成.接口:空心圆+直线(唐老鸭类实现了‘讲人话’):依赖:虚线+箭头(动物和空气的关系):关联:实线+箭头(企鹅需要知道气候才迁移):聚合:空心四边形+实线+箭头(雁群和大雁的关系):合成:实心四边形+实线+箭头(鸟和翅膀的关系):泛化:空心三角形+实线(动物和鸟的继承关系):实现:空心三角形+虚线(实现大雁飞翔的接口): 转载自:http://www.cnblogs.com/k…
[转载] Javascript与其他的面向对象语言不同,如C++,Java或PHP等.它并不是基于类的,而是基于原型的一种语言. 1.对象创建 在Javascript中创建一个类是非常容易的: var myObject = { aVar: 15, aMethod: function() { alert("I'm a method of the object myObject." + "aVar: " + this.aVar); } } 你不必通过定义一个类然后实例化…
(一)学习目标: 1.面向对象基本概念: OOP的主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述一个事物在整个解决问题步骤中的行为. 2.熟悉OC类的定义: OC类分为两个文件,.h 和 .m文件 .h 文件存放类.函数声明,类声明用关键字@interface @end 来声明 .m文件存放的是具体实现,类实现使用关键字@implementation @end 来实现 + 表示类的方法,相当于 JAVA中的静态函数 -  表示对象方法,对象实例化可…
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Helvetica } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Heiti SC Light" } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Times New Roman"; min-height: 27.0px } p.p4…
1.内聚性 类应该描述一个单一的实体,所有的类操作应该在逻辑上相互配合,支持一个连贯性的目标.例如:学生和教职工属于不同的实体,应该定义两个类. 2.一致性 要遵循一定的设计风格和命名习惯.给类.方法.数据域选择有信息量的名字.流行的风格是将数据声明置于构造方法之前,并将构造方法置于方法之前. 选择的名字要保持一致,给类似的操作选择不同的名字并非好的习惯. 如果不想让用户创建类的对象,可以在类中声明一个私有的构造方法. 3.封装性 用private修饰符隐藏其数据域,以免用户直接访问.如果想让数…