Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android如何有效地更改许多类变量?(也许我在自讨苦吃啊?)_Android_Oop_Class_Variables_Object - Fatal编程技术网

Android如何有效地更改许多类变量?(也许我在自讨苦吃啊?)

Android如何有效地更改许多类变量?(也许我在自讨苦吃啊?),android,oop,class,variables,object,Android,Oop,Class,Variables,Object,我有一个名为Receipt的Android类,它是根据零售环境中的典型收据建模的,包括以下类变量: receipt_number date_ordered date_paid item_quantity item_type item_sku item_price total_price customer_id customer_name clerk_id clerk_name 呼。。。有很多。我刚刚开始习惯OOP,虽然我喜欢使用收据数据类来存储收据的属性,但我担心我使用对象只是为了使用对象,而

我有一个名为Receipt的Android类,它是根据零售环境中的典型收据建模的,包括以下类变量:

receipt_number
date_ordered
date_paid
item_quantity
item_type
item_sku
item_price
total_price
customer_id
customer_name
clerk_id
clerk_name
呼。。。有很多。我刚刚开始习惯OOP,虽然我喜欢使用收据数据类来存储收据的属性,但我担心我使用对象只是为了使用对象,而不是适当地使用数据类

为什么??好的,我在另一个类中有另一个方法,我将我的Receipt对象提供给它。一旦输入到另一个类,收据数据将用于填写一个视图,该视图允许用户编辑所述收据(来自收据的数据填写编辑文本框,该文本框可以更改,然后保存)。问题是更新收据的代码越来越荒谬。我在收据中为上面的每个变量(例如setClerkId()、setCustomerName()、setItemSku()等)准备了一个helper方法,当我更新收据时,我发现自己调用了所有这些方法,它变成了一个巨大的老鼠窝

我肯定是错过了这里的船,而且很可能是错过了。必须有一种更明智的方法来输入我的新收据的所有值(它实际上是旧对象的更新),而不必使用助手方法手动更新每个变量?如果这是正确的方法,我想我会有点惊讶(不,非常惊讶)

任何朝着正确方向的努力都将不胜感激


谢谢

我想你做得对。如果一个对象有很多命名属性,那么您必须执行很多get/set操作

如果将它们全部放入单个(或多个)
ArrayList
/
String[]
甚至其他对象中,而不需要单独访问它们,则可以简化这一过程。无论您觉得什么都是数据的适当表示

或者你用一个
HashMap
代替你的类,并像这样存储它们:

HashMap<String, String> hashmap = new HashMap<String, String>();
hashmap.put("receipt_number", value);
String value = hashmap.get("receipt_number");
HashMap HashMap=newhashmap();
hashmap.put(“收据编号”,值);
字符串值=hashmap.get(“收据编号”);

这导致了一种更动态的存储值的方式。

一个好的开始可能是识别由收据(项目、客户、办事员)实际代表的单独对象,并考虑分别建模它们(例如,职员多久更换一次?为什么每次都重新输入它?)对象应该在很大程度上与单个项目相关(理想情况下是与单个责任相关)。啊哈,所以我对对象的定义过于笼统,你相信吗?我认为你的思路是正确的,因为是的,各种物品永远不会改变,因此也许它们毕竟应该是分开的。。现在,我从一个完全不同的角度来看待我的应用程序。我发现处理SQLite数据库中的对象的最佳方法如下:所以。。一个说,是的,一个说不。我想这是偏好?这是很多偏好:)如果你的类除了保存基本数据之外什么都不做,并且没有功能,那么如果你为存储优化它就好了,例如,使用列表。如果你想给你的类更多的功能,你可以把它们分成项目、日期、客户和职员。但是,如果您只想将数据设置为EditText并从那里读回,那么使用这些数据就变得更加乏味。