2014-06-18 9 views
1

저는 초보 프로그래머입니다. 저는 OO 디자인에 대한 제 생각이 돈이든 벗어나려고하는지보고 싶습니다.객체 지향 프로젝트 클래스 구조

나는 내가 놀고있는 기본적인 안드로이드 애플 리케이션을위한 데이터를 제어하는 ​​3 개의 클래스가 있습니다. FishingTrip - 각 인스턴스 (놀랍게도)는 낚시 여행을 나타냅니다. Fish - 잡힌 물고기를 나타내는 각 인스턴스와 DatabaseHelper - SQLite 데이터베이스에 데이터 삽입을 제어합니다.

이것은 매우 간단한 프로그램이므로 모든 안드로이드 활동 내에서 DatabaseHelper를 사용하여 모든 데이터 입력 및 출력을 구현할 수 있습니다. 그러나 나는 이것이 좋은 OOP가 아니다는 느낌을 갖습니다.

다른 대안은 FishHand 클래스가 DatabaseHelper를 통해 데이터베이스에 삽입하는 메서드를 호출하는 입력 인스턴스 변수와 인스턴스 변수를 할당하여 Fish 개체를 인스턴스화 할 수있는 입력 변수를 사용하는 생성자를 갖는 것입니다. 데이터베이스, 즉 액세스하는 각 물고기가 낚시 여행에 잡힌대로 내가 설정, 이제 방법의 시리즈와 FishingTrip 클래스를

public Fish(String species, int size){ 
     this.species = species; 
     this.size = size; 
} 
public Fish(DatabaseHelper db, int tripID, int fishID){ 
     //getFish() is a query inside the DatabaseHelper class 
     //that returns the row for one fish from one Fishing Trip 
     Cursor c = db.getFish(tripID,fishID);   
     this.species = c.getString(0); 
     this.size = Integer.parseInt(c.getString(1)); 

을해야, 다음 물고기는 그 관계를 적용 할 FishingTrip을 확장했다?

DatabaseHelper 클래스를 사용하여 안드로이드 액티비티에서 데이터베이스 트랜잭션을 구현하면 작업이 완료되지만 더 큰 프로그램을 개발하려고하면 다른 방법으로 더 좋은 방법이 될 것이라고 생각합니다.

(참고 : 캐치 간의 거리 또는 캐치 사이의 시간과 같은 Fish/FishingTrip 개체 간의 분석을 수행 할 수 있도록 좌표와 같은 다른 데이터 수집을 구현합니다.

짧은 이야기 짧게 -이 프로젝트를 구조화하기위한 올바른 프레임인가?

감사합니다.

+1

OOP는 도구가 아니라 목표입니다. 어쨌든 [엔터프라이즈 애플리케이션 아키텍처 패턴] (http://www.amazon.com/dp/0321127420)을 읽어 보시기 바랍니다. –

답변

2

Fish 및 DatabaseHelper 클래스는 제 의견으로 분리되어야합니다. Fish 클래스는 모델의 일부이며 DatabaseHelper 클래스는 DB 액세스를 담당합니다. 따라서 DatabaseHelper 클래스를 변경해도 Fish에 영향을주지 않아야합니다. 대신 DatabaseHelper의 데이터를 Fish로 전송하는 계층이 있어야합니다.

그래서, 대신 :

DatabaseHelper db = ...; 
int tripID = ...; 
int fishID = ...; 
Fish fish = new Fish(db, tripID, fishID); 

당신이 가진 것 :

DatabaseHelper db = ...; 
int tripID = ...; 
int fishID = ...; 
Cursor c = db.getFish(tripID, fishID);   
String species = c.getString(0); 
int size = Integer.parseInt(c.getString(1)); 
Fish fish = new Fish(species, size); 

를 이렇게함으로써, 어느 클래스는 서로를 인식하고 어느 클래스에 대한 변경 사항은의 매핑 레이어에 영향을 미칠 것 중간.