• ベストアンサー

テーブルの1レコードを継承してクラスを定義する方法

あるサイト(URLは忘れました。)で、 「  テーブルの1レコードを定義したクラスを、継承  して、新しいクラスの中でテーブルを作成する。                        」 と記載されていたのですが、コーディング上どのよう にするかを迷っております。 ご指導のほどお願いします。 記憶にある図解です。 ┌──────────┐extends 1レコードクラス │          │ │┌┬┬┬┬┬┬┬┬┐│ ││││││││││││ │└┴┴┴┴┴┴┴┴┘│ │          │ └──────────┘ ┌┐ ││が1レコードクラスに相当します。 └┘

  • Java
  • 回答数4
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.2

たとえば 1レコードがもっている情報がIDと名前だとします。 public class Meisai{ private String id; private String name; public Meisai(){ id=""; name=""; } public String getId(){ return this.id; } public String getName(){ return this.name; } } でこの明細をためこんでおくクラスをつくります。 public class ListData{ private Vector data; public ListData(){ data = new Vector(); } public getMeisai(int i){ return (Meisai)this.data.get(i); } } て感じでやれるのではないでしょうか?

asaichi
質問者

お礼

返事が遅くなりすみません。 #3でお礼させて頂きました。

その他の回答 (3)

  • akira-h
  • ベストアンサー率80% (4/5)
回答No.4

VectorではなくHashMapを使うのはどうでしょうか? public class ListData{ private Map table; public ListData(){ table = new HashMap(); } public getMeisai(String id){ return (Meisai)table.get(id); } public void setMeisai(String id, Meisai data) { table.put(id,data); } } HashMapを使えばIDをキーとしてデータが取得できます。 ただ、nameが一致するデータを取得使用とする場合、一つ一つ調べる必要がありますが。

参考URL:
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/HashMap.html
asaichi
質問者

お礼

返事が遅くなりすみません。 このクラスは、このようなときに利用するのですね。 「id」で全て処理するようにするのであれば、このクラスは活用できますね。 検討してみます。 ありがとうございます。

  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.3

ちなみにsetterとかは省いちゃったのですが 適当につくってください。 取り出すところだけイメージしてみました。

asaichi
質問者

お礼

返事が遅くなってすみません。 勉強になります。 setterは、 public int AddMeisai( Meisai tMeisai ) {  this.data.add( tMeisai );  return( 0 ); } としようと思います。 たびたびすみませんが、Vectorに登録した内容から 「id」に一致するデータを抽出する場合は、Vector から1レコードずつ獲得しチェックしながらする 方法しかないのですか?VectorのAPIを見たら、「 比較」するメソッドが無かったので…。 すみませんが、よろしくお願いします。

  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.1

テーブルってどういうことさしているのでしょうか? データのなかにデータを持っている状態をつくればいいのですか? これだったら配列とか Vectorとかをつかえばできるとおもいます。

asaichi
質問者

補足

詳細を記載していませんでした。 すみません。 昨日 http://oshiete1.goo.ne.jp/kotaeru.php3?q=589973 について質問せて頂きました。 これは、1レコードについてのもち方でしたので、 それを複数レコードのよう保持したいと思いました。 すみませんが、よろしくお願いします。

関連するQ&A

  • 自分で作ったクラスを継承するとエラーが出ます。

    サーブレットを勉強しているのですが、自分で作成したクラスを継承した サーブレットを作成してコンパイルするとその継承したクラスの シンボルを解釈できませんというエラーが出ます。 たとえばclass01というクラスを継承したclass02.javaをコンパイルすると シンボルを解釈できません public class02 extends class01{ といったエラーが出てしまいます。 どうも自分で作ったクラスを読み込めていないようなのですが どうしたらよいのでしょうか? 初歩的な質問かもしれませんが、よろしくお願いします。 ちなみにOSはWin2000、サーブレットはJRUNを使用しています。

    • ベストアンサー
    • Java
  • クラスの継承の仕方

    後学のため、JavaScriptについて勉強しています。 JavaScriptでもクラス(のようなもの)を定義してオブジェクトを作成できるようですが、サブクラスを定義する方法が分かりません。メソッドやコンストラクタはどのように継承すればよいのでしょうか。 お分かりの方おられましたら、ご教授のほどお願い致します。

  • 継承について

    みなさま、どうかお知恵を貸して下さい。 javaを勉強中で、本を読みながら試しに動かしています。 現在、実現したい動作が実現可能かどうかを調べているところです。 そのため、環境やバージョン等は決まっておりません。 むしろ、実現可能な環境やバージョンがあれば、教えてください。 実現したい機能ーーーーーーーーーーーー 親クラスAにメンバーとメソッドを定義します。 Aを継承する子クラスBを定義します。 プログラム中で、A、Bのインスタンスを生成します。 そして、A、Bを継承するCのインスタンスを生成したいのです。 Cのメンバーやメソッドは、Bと同様のものです。 この場合、BのクラスからCのようなインスタンスを作成することは、可能なのでしょうか? ・・・Cを定義していないので、おそらく不可能かと思います。 やはりこういった場合、Aを継承しているBを継承するCクラスを定義しておく必要があると考えています。 では、Cを継承するD,Dを継承するE・・・というように、いくつ必要になるかわからない場合、最大数分継承したクラスを用意すべきでしょうか。 なぜ、そうしたいかというと、組織図のようなものを作成したいのですが、組織図を構成する人数は、ユーザーの任意としたいのです。 継承したクラスを用いれば、そのまま組織図の体系を表現できる気がしました。 質問が大雑把になってしまい、申し訳ないのですが、お力を貸していただければ幸いです。

    • ベストアンサー
    • Java
  • 抽象クラスを継承してクラスを作成の作り方が分かりません

    -------------------------------------- Employee -------------------------------------- -name : String #coin:double -------------------------------------- +getName():String +setName(String name):void +getcoin():double +setcoin(double Salary):void -------------------------------------- 抽象クラスを継承してクラスを作成 car1.java car2.java Employee.javaはIEmployeeを継承 IEmployee.javaは、メソッド"String getRoleName()を定義するインターフェース IEmployee.javaも作成 Sample.javaを実行し次の結果を得られるように作成 どなたか分かる方がいましたら教えて下さい。宜しくお願いします。

  • クラス継承 メンバ引継ぎとprivateについて

    「クラス継承時のメンバ引継ぎの意味」と、 「privateでオーバーライドさせた際の挙動」ついて教えてください。 class Pa{  private $level="10";  public function getLevel(){   return $this->level;  } } class Ch extends Pa{  protected $level="5"; } $ch = new Ch(); echo $ch->getLevel(); このとき、$ch->getLevel();は、 Paクラスのメソッドをchオブジェクトで見に行ってるのでしょうか? それとも、Chクラスに引き継がれたメソッドを見に行っているのでしょうか? また、このときの「$this」「$this->level」は、それぞれ何を意味しているのでしょうか? また、このときの、Chクラスの「$level」は、どういう状態(扱い)になっているのでしょうか? エラーにならないのですが、再定義扱いされないのでしょうか? 新定義扱いされてるってことでしょうか? 「privateメンバを継承した際」、どういう動きをするのか(ルールになっているのか)教えてください。

    • ベストアンサー
    • PHP
  • 【PHP】クラスを継承した際にデータ型も継承すると

    とある有料のオンライン学習サイトをつかっています。 学習項目の流れは以下の通りです。 現在「15 型の継承について見ていこう」で躓いています。 01 オブジェクトを使ってみよう (02:56) 02 投稿に関する処理を作ろう 03 クラスでデータ型を定義しよう 04 インスタンスを作ってみよう 05 コンストラクタを使ってみよう 06 クラスを整理しておこう 07 アクセス修飾子について見ていこう 08 メソッドを介してプロパティを操作しよう 09 プロパティで型宣言をしてみよう 10 staticキーワードを使ってみよう 11 オブジェクト定数を使ってみよう 12 クラスを継承してみよう 13 子クラスで独自の実装をしていこう 14 メソッドをoverrideしてみよう 15 型の継承について見ていこう *型の継承 *型を継承するメリット この項目で記述されているソースコードは下記のとおりです。コード内のクラス、SponsoredPostは クラスPostを継承しています。よって両方のクラスともにPost型として扱えると説明があります。 ソース内のこの箇所で processPostという関数を作成し、変数$postにPost型と型付けをしています そしてforeachでPostで型付けられた$post型(クラスPostとそれを継承したクラスSponsoredPost)をひとつづつ取り出し、processPostを用いてそれぞれにshow()メソッドで表示させています。 ----------------------- <?php class Post{ protected $text; public function __construct($text){ $this->text = $text; } public function show(){ printf('%s',$this->text); } class SponsoredPost extends Post{ private $sponsor; public function __construct($text, $sponsor){ parent::__construct($text); $this->sponsor = $sponsor; } public function show(){ printf('%s by %s', $this->text, $this->sponsor); } } $posts = []; $posts[0] = new Post('hello'); $posts[1] = new Post('hello again'); $posts[2] = new SponsoredPost('iPhone','Apple'); function processPost(Post $post){ $post->show(); } foreach($posts as $post){ processPost($post); ------------- クラスを継承すると親クラスのプロパティやメソッドが子クラスに継承されるというのは理解できています。「15 型の継承について見ていこう」という項目では 『Post型の変数を受け取る関数を作って、データ型が継承されることを説明していきます。』 と解説してあります。 クラスを継承すると親クラスのプロパティやメソッドが子クラスに継承されるというのは理解できています。私の知っているデータ型(文字列型、整数型、浮動小数点数型、論理型、配列型、オブジェクト型、リソース型、NULL)は下記の2か所だけです。 show()メソッド内の、['%s']と['%s by %s']で文字列が指定されています。 したがってこの項目で説明されている 『Post型の変数を受け取る関数を作って、データ型が継承されることを説明していきます。』 とは、「クラスを継承する際にプロパティやメソッドだけでなく、データ型、ここでは(['%s']と['%s by %s'])も継承されるということが説明されているという解釈でよろしいのでしょうか? 少し混乱しています。もし私の解釈が間違っているようでしたら教えてください。 初学者です。よろしくお願いいたします。 <表示結果>

    • ベストアンサー
    • PHP
  • PHPでの継承について

    PHPの継承についての質問です。 PHPではクラスを継承する場合 スーパークラスのpublicとprotectedなメンバを継承すると いいます。 継承とは、スーパークラスで定義したメンバが サブクラスで定義されたことと同義である。 という前提で質問します。 ひょっとしたらこの前提も微妙に間違っているかもしれません。 以下の用なコードがあるとします。 <?php class AClass { //サブクラスへ継承されるスーパークラスのメソッド public function superClassPublicMethod(){ //【1】 $this-> subClassPrivateMethod(); } } class BClass extends AClass{ public function subClassPublicMethod(){//【2】 $this->subClassPrivateMethod(); } //継承したスーパークラスで定義されているメソッドからコールするサブクラスで定義したメソッド private function subClassPrivateMethod(){ //【3】 print __CLASS__; } } $obj = new BClass(); //サブクラスで定義した public なメソッドを実行 $obj->subClassPublicMethod(); //【4】 //スーパークラスから継承したpublic なメソッドを実行 $obj-> superClassPublicMethod();//【5】 ?> コレを実行すると【4】はきちんとBClassという結果が返ってきます。 ところがその下の【5】を実行すると Fatal error: Call to private method BClass::subClassPrivateMethod() from context 'AClass' in /usr/local/apache/htdocs/ext06.php on line 9 という実行時エラーが返ってきます。これを読むと、AClassのコンテキスト内ではBClassのprivateなメンバは コールできませんよ。というエラーですね。そもそもAClassのコンテキストということは、これはAClass内で実行されているということですよね? ここで、スーパークラスからこのpublicなメソッドは継承しているはずなのになぜ、サブクラスのBCLass内ではなくスーパークラスのAClass内という エラーが返っているのでしょうか? 継承とは、サブクラスで定義したと同義ではなく、スーパークラスまで内部的にアップキャスト?してコールしにいっているのでしょうか? 詳しい方ご教授ください。 よろしく御願いします。

    • ベストアンサー
    • PHP
  • テーブルのレコード削除ができません

    SQLserver2000を触る事になり思った通りにならず困っております。 テーブルに主キーを設定せずデータ型を「int」でフィールドに重複する数値を入れてしまいました。 後から重複入力のミスに気づき重複したレコードを 「テーブルを開く」-「全行を返す」から1レコードを 削除しようとしたのですが、 「キー列の情報が足りないか、正しくありません。更新の影響を受ける行が多すぎます。」と表示され削除できません。 このテーブルは、多くのビューで使用してすでに動いている再作成することは難しいです。 このレコードを削除する良い方法はあるのでしょうか。 ご存知の先生方ご指導よろしくお願いいたします。

  • テーブル定義書を自動生成するツールはありませんか?

    いつもお世話になっています。 現在システムを構築中で、テーブル自体は既に出来ています。 これを資料としてまとめるために、Excelでテーブル定義書を作成しよう かと考えております。 ここで質問なのですが、既に構築済みのテーブルから、 自動的にテーブル定義書を作成するツールは有りませんでしょうか? 下記のURLを参照したところ http://ml.postgresql.jp/pipermail/pgsql-jp/2002-May/009472.html CSEというソフトが有力なようですが、既に更新がされていないようで 現在のPostgreSQLのバージョンとは合わないようです。 E-R図はvisio等のツールでも作成できますが、テーブル定義書を自動的に 作成してくれるツールは以外に見当たらないようで、ちょっと困っています。 PostgreSQLのバージョンは 7.4.7 もしくは 8.1.3です。 よければご教示頂ければ幸いです。

  • 抽象クラスを継承した普通のクラスから、

    抽象クラスを継承した普通のクラスから、 抽象クラス内でprotected宣言したクラスのフィールド(連想配列)へ データをセット&ゲットしてみたいのですが、やり方がよく分かりません。 上記内容を満たす簡単なサンプルを誰か作っていただけないでしょうか。 ちなみに、下記は、自分でやろうとして、頭がこんがらがってしまった例です。 あくまでもイメージですが、 こんな感じで、作成していただけると、うれしいです。 <?php abstract class A1{ protected $data = array();   public function setData($value){ $this->data[$key] = $value; } public function getData($key = null){ if (null == $key) { $this->data; } else { $this->data[$key]; } } } class C1 extends A1{ public function main(){ $this->setData('key1') = 'value1'; $this->setData("キー2") = "値2"; } } $c1 = new C1; $c1 -> main(); var_dump($data); ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう