【发布时间】:2018-02-04 03:48:22
【问题描述】:
我了解 OO 编程的工作原理,但在实际使用一两个以上的课程方面几乎没有实践经验。当谈到实际使用它时,我在 OO 设计部分遇到了困难。我遇到了以下可以从 OO 中受益的案例:
我有几组来自不同来源的数据,一些来自文件,另一些通过 API 来自互联网,还有一些来自不同来源。当涉及到它们包含的数据时,它们中的一些非常相似,而其中一些则完全不同。我想可视化这些数据,并且由于几乎所有数据都基于我计划在地图上执行此操作的位置(在 python 中使用 Folium 创建基于 Leafletjs 的地图),并带有某种标记(带有一点点弹出窗口中的信息)。在某些情况下,我还想创建一个包含数据概览的 pdf 并将其保存到磁盘。
我想出了以下(开始)类的想法(用 python 编写来展示这个想法):
class locationData(object):
# for all the location based data, will implement coordinates and a name
# for example
class fileData(locationData):
# for the data that is loaded from disk
class measurementData(fileData):
# measurements loaded from disk
class modelData(fileData):
# model results loaded from disk
class VehicleData(locationData):
# vehicle data loaded from a database
class terrainData(locationData):
# Some information about for example a mountain
class dataToPdf(object):
# for writing data to pdf's
class dataFactory(object):
# for creating the objects
class fileDataReader(object):
# for loading the data that is on disk
class vehicleDatabaseReader(object):
# to read the vehicle data from the DB
class terrainDataReader(object):
# reads terrain data
class Data2HTML(object):
# puts the data in Folium objects.
考虑到要输出的数据,我认为每个数据类都会在例如 render() 方法中呈现自己的数据(因为它知道自己拥有什么信息)。渲染方法的输出(可能是 dict)将用于 data2pdf 或 data2html,尽管我还不确定如何执行此操作。
这对 OO 设计来说是一个好的开始吗?有人有什么建议或改进吗?
【问题讨论】:
标签: python oop architecture