我受命设计一个数据库引擎。我根本不需要实现代码,只有设计(psuedocode,序列图等)。我已经得到了方法,并正在寻求任何帮助,以进一步了解它是我正在做的。下面是我到目前为止所得到的,任何帮助都是非常感谢的。这是一个家庭作业,不是寻找任何答案,只是更深入地了解如何更好地理解设计这个软件。
DB方法: 静态空createDB(String dbName): 在磁盘上创建一个新文件夹(即:存储为c:/dbName)该文件夹将是数据库的根;其中包含表和索引>(文件) 静态空deleteDB(String dbName): for(磁盘文件夹(c:/)中的folderName) if(folderName == dbName)从磁盘中删除 静态数据库openDB(String dbName) void closeDB() 表createTable(String tableName,long recordSize): 在数据库文件夹中创建新文件-- tableName在文件中创建一个存储记录大小的头--这个文件是一个字节数组,记录大小将告诉我存储在>这个表中的对象有多大。(即:如果文件总数为105字节)。我知道我的头是5个字节,所以在头后每超过10个字节(15,25,35…)是表中的一个对象。 表getTable(字符串tableName) 在数据库文件夹中,迭代每个文件If(文件名== tableName)返回表(文件) void deleteTable(字符串tableName) 在数据库文件夹中,迭代每个文件if(文件名== tableName)删除表(文件) 索引createIndex(String indexName) 索引getIndex(String indexName) void deleteIndex(字符串indexName) 表格方法: long getRecordSize() 表是一个文件(byte[]),第一行文件(字节)是包含recordSize返回recordSize的头。 long addRecord(byte[]记录) 在表文件的头文件中,获取文件中的记录大小和对象数,将记录写入文件中的spot (spot =(文件中已经存在的对象的#) >+头大小。(即:如果标头大小=5字节,记录大小= 10字节,我已经有7个对象在>file中。。。下一个对象将在spot (7 * 10) +5= 75处添加。 void removeRecord(长primaryKey) byte[] getRecord(long primaryKey) void updateRecord(长primaryKey,byte[]记录) 空关闭() 索引方法: Void addKey(字符串键,长值) IteratorgetValues(String startKey,String endKey) 长deleteKey(字符串键) void updateKey(字符串键,长值) 空关闭()
发布于 2012-11-20 15:54:14
首先,您必须理解这些方法是外部接口。您很可能在引擎盖下做更多的事情(在它们自己的线程中生成长的或短命的对象,有实用程序库等等)。
首先,用类图或其他方式对您拥有的内容进行建模。然后尝试理解接口将如何使用(也许通过编写一些详细的用例?)。我发现CRC卡在这一步非常有用,因为它们使移动东西变得很容易,一次查看单个类等等。
当您了解系统时,试着从后端功能和功能方面了解您需要什么,用新类扩展类关系图,直到涵盖所有内容为止。
当您从序列图开始时,请准备进行更改。在剩下的工作中,您可能很容易发现初始模型的问题,解决这些问题通常是有用的,而不是试图绕过它们/忽略它们。
https://stackoverflow.com/questions/13476745
复制相似问题