オプジェクト - みる会図書館


検索対象: UNIX MAGAZINE 2003年1月号
27件見つかりました。

1. UNIX MAGAZINE 2003年1月号

特集・プログラミング入門 図 9 糸ムみ型の変数とクラス型の変数 ・組込み型の場合 int X ・クラス型の場合 変数の宣 = 10 ; Television wega; オブジェクトの割当て wega = new Television(36); weg a .. n ⅶ参照 オブジェクトへの参照 wega SlZe channel power オブジェクト weg a いう特別なメソッドを用いてオプジェクトに初期値をケ えることができます。コンストラクタは、かならすクラス と同じ名前でなくてはなりません。引数は自由に決めるこ とができ、複数のコンストラクタを定義することも可能で す。 たとえは、 TeIevision クラスに size と power を指定 するコンストラクタを追加すると、次のようになります。 public TeIevision(int size) thiS . Size SIZe; / / もう 1 つのコンストラクタ public Te1evision(int size , thiS . Size SIZe; this . power = power; コンストラクタを利用すると、 オプジェクトカイれます。 カべージ・コレクション C 十十言語を知っている人は、 boolean power) このクラスの定義にデス いろいろな初期値をもつ 自重加勺に判断し、その領域を適当なタイミンクて解放して くれます。これをおこなナ欟冓が、、ガべ ン " です。 キーワード this ージ・コレクショ ソッドを呼び出しています。 8 行目と 13 行目では、それぞれのオプジェクトのメ TvExample の残りの部分を見てみましよう。 フィールドやメソッドへのアクセス ます。 に出てくる power は、 this. power と同じものを示してい 名前が違うので、明示的に this を書いていません。 メソッド on や。仕では、オプジェクトの変数と引数の ただの size は引数の size ということです。 す。つまり、 this. size はこのオプジェクトの変数の size 、 す this を使って明示的にどの size であるかを表していま トの変数である size の名前が同じなので、自分自身を表 このコンストラクタでは、引数の size と、オプジェク プジェクトを作成すれば自重加勺に設定されます。 っています。これは現在のオプジェクトを表す変数で、オ コンストラクタのなかで、、 this " というキーワードを使 トラクタがないことに気つ、くかもしれません。 C 十十のデ ストラクタとは、オプジェクトか削除されるときに呼び出 される特別なメソッド ( メンバー関数 ) のことです。 Java にはメモリの自動管理オ冓があるので、不要にな った領域は自重加勺に解放されます。 C の free や C 十十の delete のような演算子を用いてフログラムで明示的に解 放する必要はありません。システムが不要になった領域を 102 8 13 wega. 0Ⅱ(); aquos .0取() ; UNIX MAGAZINE 2003.1

2. UNIX MAGAZINE 2003年1月号

特集・プログラミング入門 図 14 サンプル・プロクラム StringExampIe3. java 1 class StringExamp1e3 3 4 5 6 7 8 9 10 ・実行結果 public static void main(String ロ args) System. out . println("strl . equaIs(str2) is " + strl . equaIs(str2) ) ; str2) ) ; str2 is " 十 (strl System. out . println("strl strl ; str2 String strl = new String("samp1e string") ; String % j ava StringExamp1e3 strl str2 is true strl . equa1s(str2) is true 図 15 strl str2 = 演算子と equals メソッド ( 2 ) オブジェクト 1 への参照 オブジェクト 2 への参照 sample string S ⅲ ng オブジェクト 1 これは図 15 のように表すことかできます。 equals メソッドは、 Java のはかのクラスにもありま す。 Java では、オプジェクトの内容を上交したいときは equals メソッドを使い、オプジェクトカ甘旨し示している 先か 1 司じかどうかを上交したい場合は = = 演算子を使うわ けです。 配列を使う ときはどうするでしようか。たとえは、次のように考える と書けはよいでしよう。それでは、 5 つの値段を表したい int prlce とにすると、値段を 1 つだけ表したいのなら、 値段を表す変数を考えてみましよう。値段を int て表すこ 通常、変数かイ : 苻できる値は 1 つだけです。たとえは、 こともできます。 土 nt i nt i nt i nt i nt pricel price2 price3 price4 price5 0 ; 0 ; 0 ; 0 ; 0 ; 106 しかし、このカ 1 去では 5 つの値段を扱うたびに pricel —price5 と書かなくてはいけません。たとえば、 5 つの値 段に、、 100 " という値を代入するコードは、 pricel 100 ; price2 100 ; price3 = 100 ; 100 ; price4 price5 100 ; と書くことになるでしよう。これでも動きますが、いかに も美しくありません。 このような場合には、配列を利用すればすっきりした コードか書けます。 配列を表す変数は次のように宣言します。 int ロ prices; int prices ロ ; ご覧のように、 [ ] を使って配列であることを示していま す。この [ ] は、上例のように型の後ろに書いても、変数 の後ろに書いてもかまいません。 この段階では、配列を表す変数を宣言しただけ、つまり prices は任意のサイズの int の配列を一寺できる " とい うことを亘言しただけです。 この配列を表す変数を利用するためには、実際の配列を 指すようにしなくてはなりません。それには、クラスの生 成の場合と同じように new 演算子を使います。 UNIX MAGAZINE 2003 ユ うになりました。この変数は、次のようにして使います。 これで、 prices 変数は 5 つの int 型の値をイ尉寺できるよ prICes new int [ 5 ] ; int ロ prices ;

3. UNIX MAGAZINE 2003年1月号

特集・プログラミング入門 図 11 図 10 のプログラムの実行結果 Stringl sample string length: 13 4th character: p 4 to 8 characters : p1e s String2 : sample string strl . equals (str2) : true String3 other string strl . equals (str3) : false String4: The most beautiful thing we can experience is the mysterious . lt is the source of a11 true art and science . The first occurrence of "the" is at location 46 The 1ast occurrence of "the" is at location 72 String5: the most beautiful thing we can experience is the mysterious . it is the source of a11 true art and science . The first occurrence of "the" is at location 0 The 1ast occurrence of "the" is at location 72 図 12 サンプル・プログラム StringExample2. java 1 class StringExampIe2 3 4 5 6 7 8 9 10 public static void main(String ロ args) System ・ out ・ println("strl . equa1s(str2) is + strl . equa1s(str2)) ; str2 is str2) ) ; + (strl System. out . println("strl str2 = new String("samp1e string") ; String strl = new String("samp1e string") ; String このフログラムをコンパイルして実行すると、結果は図 11 のようになります。 比較 UNIX MAGAZINE 2003 ユ れぞれ何を表しているのかを図 13 に示します。 どおりの結果か得られます。このとき、 strl と str2 がそ てきます。一方、 equals メソッドで比較した場合は意図 ですが、 = = 演算子で上師交すると、 false という結果カっ strl と str2 の内容は、どちらも、、” sample string ” strl . equa1s(str2) is true strl str2 is false % j ava StringExamp1e2 のように表示されるはすです。 さて、このプログラムをコンパイルして実行すると、次 な実行結果か得られるかを考えてみてください。 このさきを読む前に、図 12 のプログラムを眺めて、どん = 演算子を使わないのでしようか ? しています。なぜ、 図 10 の例では、 equals メソッドを用いて文字列を上交 図 13 strl = 演算子と equals メソッド ( 1 ) オブジェクト 1 への参照 Str2 オブジェクト 2 への参照 St ⅱ ng オブジェクト 1 'sample string' String オプジェクト 2 'sample string Java のオプジェクトの変数は、参照であることを思い 出しましよう。 strl は String オプジェクト 1 への参照 を、 str2 は Str ⅲ g オプジェクト 2 への参照を一尉寺してい ます。つまり、参照そのものの値は異なっています。 を用いてオプジェクトを上は交すると、このイ尉寺している参 照の値をもとに上師交処理をおこなってしまうのです。 もう 1 つ、例をみてみましよう ( 図 14 ) 。 このプログラムでは、変数 str2 に変数 strl の値を代入 しています。もちろん、これは同じオプジェクトへの参照 の値ですから、 = で上交しても同し値と判断されます。 105

4. UNIX MAGAZINE 2003年1月号

特集・プログラミング入門 それでは、ソースコードを詳しく見ていきましよう。順 番が逆になりますが、 TvExample クラスからです。 「 Java の言語井幻の節で説明したように、クラスは オプジェクトを作成するための芻旧杉です。オプジェクトを 使うには、クラスからオプジェクトを作成します。これを おこなっているのが、図 8 の 6 ~ 7 行目と 12 行目です。 6 TeIevision wega; new Te1evision(36) ; 7 wega new TeIevision(16) ; 12 Television aquos 6 行目では、 TeIevision クラスの型をもつ変数 wega を 旦暠しています。 7 行目では Television クラスからオプ ジェクトを作成し、 wega 変数にオプジェクトを割り当て ています。 12 行目は、同様な操作を 1 行にまとめて書いたもので す。どちらの書き方をしても結果に変わりはありません。 この行では、 TeIevision クラスから aquos オプジェクト を作成しています。 この文は、次の 3 つの部分から構成されています。 1.6 行目と 12 行目の、、 = " の左側 これは変数の亘暠部分です。変数は、使う前にどの型を もつのかを宣言しなければなりません。この 2 つの行 では、 Television 型の変数 wega と aquos を旦暠して います。 暠しただけでは、オプジェクトはまだ作成さ れません。 2.7 行目と 12 行目の、、 = " の右側 オプジェクトを作成しています。 new というキーワー ドは、 Java でオプジェクトを作成 ( インスタンスイりす るための new 演算子です。 3. new 演算子に続く Television(36) や Television(16) これらは、 Television クラスの、、コンストラクタ " と呼 はれる特別なメソッドを呼び出しています。コンストラ クタとは、オプジェクトを新しく作る際に期化するた めのメソッドです。ここでは、 wega オプジェクトは引 数 36 で、 aquos オプジェクトは引数 16 で初期化され ています。詳しくは、 Television クラスについて説明 するときにあわせてとりあげます。 C 十十言語を知っている人には、 Television wega; と書いてもオプジェクトカ吽成されないのは不思議に感し UNIX MAGAZINE 2003.1 るかもしれません。 C 十十ではこのように書けばオプジェ クトが生成されますが、 Java ではあくまでも変数を宣 しただけです。変数を宣言した時点では、変数の中身は空 のままです。この中身か空のものを、、 nu Ⅱ参照 " といいま す。変数がオプジェクトを指すようにするには、 new を 使って明カ勺にオプジェクトを作成し、それを変数に代入 する必要があります。 参照型 この例にあるように、 Java ではクラスも 1 つの型を 表します 9 。 int 型の変数を宣言するときは、、 int Ⅱ ; " の ように記述しますが、クラスの型の場合も、、 Television wega;" のように クラス型変数名 という形式で亘暠します。 このクラス型と宣言された変数は、どのような値をもっ ているのでしようか。オプジェクトはすべてメモリ参照 を用いてアクセスされるというのが、 Java の基本的な考 え方です。一方、系Ⅲムみ型の変数は実際の値尉寺してい ます。 これらの関係は、図 9 のように表せます。 クラス型の変数は、オプジェクトそのもの尉寺して いるのではなく、オプジェクトへの参照をイ尉寺しているわ けです。このように参照をイ寺している型のことを、、参照 型 " といいます。 コンストラクタ 今度は Television クラスのはうを見てみましよう。 図 7 の 1 行目がクラスの定義の始まりです。ここでは、 Television クラスを public 、つまりほかのクラスからも 利用できるように指定しています。 4 ~ 6 行目は、このクラスのデータを表す変数です。す べての変数が public と指定され、外部からアクセスする ことができます。 4 public int size 5 public int channel = 0 ; 6 public boolea れ power false; 9 ~ 11 行目は、このクラスのコンストラクタです。 Tv- Example クラスのほうでみたように、コンストラクタと 9 今回はとりあげませんが、 Java のインターフェイスペ d 列も型の 1 つ です。 101

5. UNIX MAGAZINE 2003年1月号

特集・プログラミング入門 図 17 クラス型の配列にオプジェクトを割り当てる オブジェクトを割り当てる astr[O] = new String(); astr[l ] = new String(); 図 18 配列のコピー 00t 。 [ 0 ] 亠 astr[l] 亠 St 「 ing オプジェクト astr[ 1 ] St 「 ing オブジェクト String ロ fruits2 = new String [ 2 ] ; 2 ) ; fruits2, System. arraycopy(fruits, / / Te1evision の配列の配列 ( 3X5 ) int ロロ aaint ; / / i Ⅱ t の配列の配列を表す変数 aai Ⅱ t の宣言 コピー元の配列 コピー元の配列のいくつ目の要素からコピーするか コピー先の配列 コピー先の配列のいくつ目の要素にコピーするか コピーする要素の個数 TeIevision[] ロ aatel = new TeIevision さらに学ぶべきこと Java のアプレットやサープレットを作る場合、文法的 り実際的なプログラムが作れるはすです。 イプラリが用意されています。これらをうまく使えは、よ り GUI を作成したりするものなど、しつにたくさんのラ えない大きな値を扱うクラスを集めたもの、日付を扱った シュテープルを表すクラス、あるいは int や long では扱 関する知識も不可欠です。 Java には、リスト構造やハッ また、 Java そのものの文法だけでなく、ライプラリに ラムを書くには、これらについての知識も欠かせません。 といった、文法十重要な機能があります。実用的なプログ ・例外 ・スレッド ・ノヾツウ - ーージ ' ・インターフェイス ・クラスの継承 Java には、これ以外にも、 ての Java の基本的機能の一部について解説しました。 今回は、 Java の概要、そしてプログラミング言語とし 108 にはここで説明した内容をそのまま活かせますが、それぞ れの作り方や生質も学ぶ必要があります。 はかの言語と同じく、 Java でプログラミングをする場 合も、デバッグの手法や作成するアプリケーションに関す る基本的な矢勧ゞ必要なのは当然です。 Java の開発工竟には、 jdb というテンヾッガが付属して います。このデバッガはそれはど強力ではありませんが、 プレークポイントの設疋、変数の出力、スレッドの確 ルし、 スタックトレースの表示など、デバッガの基本的な機能は もっています。デバッグ作業をおこなうときには、テパッ ガの利用法以外にもさまざまな知識が必要になりますが、 jdb の簡単な使い方を身につけておけは、ソースコードを 目で追いながら確認したり、変数の値を途中で表示させる よりも、はるかに早くかっ簡単に間題点をみつけられるよ うになります。 ☆ UNIX MAGAZINE 2003.1 ( なかやしき・きようこ ) すく、しかも十分な実用性を兼ね備えています。 オプジェクト指向言語として、 C 十十などよりも分かりや ものは思いきりよく捨てています。そのため、初めて学ぶ オプジェクト指向言語である C 十十と上交すると、不要な た。 Java 言語の特徴はそのシンプルなイ兼にあり、同し 今回は、 Java のごく基本的な環境や文法を紹介しまし

6. UNIX MAGAZINE 2003年1月号

特集・プログラミング入門 す。しかし、販売店てイ吏われるプログラムなら、車種や販 売価格、オフションパーツ、ボディカラーが必要になる かもしれません。どのような特徴を抽出するかは、目的に よって異なるのです。オプジェクト指向の既念では、モノ の描致を抽出することを、、抽象化 " といいます。 抽象化によって、モノの特徴を表す、、データ " を決めた ことになります。 今度は、処理について考えてみます。モノを対象とした 処理とは、さきほど抽象化した、、データ " に対して処理を おこなうということです。このように、モノを表す、、デー タ " とそれに対する、、処理 " をまとめて 1 つの部品として 扱えるようにすることを、オプジェクト指向の概念では 、カプセル化 " といい、この、、データ " と、、処理 " を 1 つ にまとめたもののことを、、オプジェクト " と呼びます。 のように 1 つにまとめておけは、、、これは ( CD のオプジェ クトで、このオプジェクトに対しておこなえる処理は xx です " というように、オプジェクトを部品として一括して 扱えるようになります。 Java では、、、クラス " を使ってこのオプジェクトを表現 します。クラスとは、データとデータに対する処理をまと めて定義した芻旧杉のようなものです。クラスはいわばクッ キーの抜き型のようなもので、たんに形を表しているだけ です。実際のフログラムでは、この抜き型で佃犲攵ものクッ キー生地を抜きながら利用することになります。この抜き 型で技かれたクッキー生地に相当するものを、、インスタン ス " と呼びます。 データは、整数や文字などで表されます。このデータ をイ焉寺しておくのが、、変数 " です。整数を表す変数を定義 すれは、その変数には整数を保存しておけるようになり ます。 変数は、プログラムでインスタンス尉寺しておくとき にも使います。インスタンスはクラスの型から作られたも のなので、これ尉寺する変数はそのクラスの型をもって いる必要があります。ハートの抜き型で抜いたクッキー生 地は、ダイヤモンド形のお皿に入れておくことはできませ ん ( はみ出したところか割れてしまうかもしれません ) 。 、、データに対する処理 " のことは、 Java では、、メソッド " クラス あるモノを表現するために、データと処理をまとめて記 述したもの。データとメソッドを含んでいる。オプジェ クトを作成する芻旧膨になる。 オフジェクト クラスのインスタンス。クラスの定義に従って作成され た変オプジェクトごとに内部のデータに値尉寺し たり、メソッドを呼び出したりできる。 変数 プログラムの実行とともに変化する値 &f 尉寺するもの。 データを表す整数のような値や、クラスをもとに作られ たオプジェクトなどを変数に入れておく。 メソッド あるデータに対する処理をまとめて言当したもの。 たとえは、、、テレビをつけて 1 チャンネルを選ぶ " とい う行動を Java のプログラムて表すとすると、 1. 、、テレピ " クラスを変数やメソッドを使って定義する 2. そこから、、 WEGA" や、、 AQUOS" というオプジェク トを作成する 3. 、、電源スイッチ " というメソッドに、、 ON" という命令 を送り、テレビの電源を入れる 4. 、、チャンネル " というメソッドに 1 という命令を送っ てチャンネルを変える のようになります。あるいは、 1. 、、本 " クラスを定義する 、、本を読む " であれは、 と呼びます。 いろいろな用語力咄てきたので、 おきましよう。 92 このあたりでまとめて 2. そこから、、広辞苑 " 、、 C 十十 Primer" 、、砂の本 " 5 とい うオプジェクトを作成する 3. 読むというメソッドを実行する となるでしよう。 このとき、、、広辞苑 " の、、読む " メソッドを呼び出して も、、、砂の本 " を読んだことにはなりません。、、本 " クラス であれは、たいていは、、読む " メソッドが必要でしよう。 しかし、あるオプジェクトの、、読む " を呼び出したとき は、、、本を読む " のではなく、、、広辞苑を読む " や、、 C 十十 Primer を読む " になります。プログラムに沿っていえは、 あるクラスからいろいろなオプジェクトを作り、そのオプ 5 広辞苑に説明は不要でしようが、これらはいすれも本の題名です。 UNIX MAGAZINE 2003.1

7. UNIX MAGAZINE 2003年1月号

特集・プログラミング入門 1 2 3 4 5 int ロ prices ; new int [ 5 ] ; pnces fO て (int i prices[i] 0 ; i く 5 ; i + + ) { 100 ; 図 16 クラス型の配列 ・組込み型の場合 ・クラス型の場合 5 行目で、配列 prices の個々の要素に 100 という値を 代入しています。このように、配列の各要素にアクセスす るには、 prices [ をれ de 工 ] オプジェクトも指していないので、 Str ⅲ g オプジェクトの たとえは次のプログラムでは、 astr はまだどの String ているかはまだ決まっていません。 とができる変数として生成され、どのオプジェクトを指し aStr 変数は String オプジェクトへの参照を 2 つもっこ 合は実際に値を入れる場所も生成されます。上の例では、 う点です。さきほどの int の配列のように、糸ムみ型の場 生成した場合は、参照を入れる場所だけが生成されるとい このとき注意が必要なのは、クラス型の配列を new で aStr = new String [ 2 ] ; String ロ aStr; とができます。 たとえば、 String クラスの配列も同じように亘暠するこ もう 1 つ、クラス型の配列の例を挙げておきましよう。 となることに注意してください。 prices [ 4 ] prices [ 3 ] prices [ 2 ] prices[l] prices [ 0 ] として生成した配列の要素は、 prices = new intC5] ; ります。したがって、 配列の添字といいます。配列の添字はかならす 0 から始ま として要素の番号を指定します。この要素の番号のことを メソッド length を呼び出そうとしてもエラーになります。 prices[0] ー prices[l ] ー prices[2] ー prices[3] ー prices[4] ー astr[0] ー astr[l] ー まだオブジェクトを指していない new int [ 5 ] ; pnces prices [ 3 ] 100 ; / / 正しい astr = new String [ 2 ] ; System. out . println("length: " + astrC0] . length()) ; / / 間違い ! ! UNIX MAGAZINE 2003.1 この状態は、図 16 のように表せます。 クラス型の配列を生成したあとで、実際のオプジェクト を指すようにしなくてはいけません。もちろん、指し示す 先は既存のオプジェクトでも新たに生成したオプジェクト でもかまいません。新たに生成したオプジェクトを指すよ うにするには、 String ロ astr; new StringC2] , astr 0 ; i く 2 ; i + + ) { new String() ; for (int i astr [i] とします。この状態は、図 17 のように表せます。 配列の初期化 酉改に、作成と同時に初期化することも可能です。 int prices ロ = new int ロ = - { 10 , 20 , 30 , 40 , 50 } ; String ロ fruits new String ロ - { "App1e" , "Orange" このようにすれは、最初から値をもつ配列を作ることが できます。 配列は、 System クラスの arraycopy メソッドを使っ て配列の全体または一部をコピーすることができます。た とえば、上記の fruits の、、 ' ' Orange" " と、 ' ' Banana" を別の配列にコピーするには図 18 のようにします。 さらに、酉改」の配列 ( の配列の・・・・・・ ) を扱うこともでき ます。配列の配列を表すには、必要な数だけ、、 [ ] " を指定 します。 107

8. UNIX MAGAZINE 2003年1月号

特集・プログラミング入門 図 5 C 十十の main 関数と Java の main メソッド ・ C 十十の main 関数の位置 / / クラスの定義 class F00 { / / クラスのデータや処理の定義 ・ Java の main メソッドの位置 / / クラスの定義 CIass F00 / / クラス F00 の内部の mai Ⅱ public static void main(String ロ args) { / / main 関数 i nt main (int argc , char** argv ) / / クラス F 。。を使う F00 f00 ; クラスとオフジェクトを使う 次の static は、この main メソッドがクラスメソッド であることを示しています。 static でない ( 通常の ) メソ プログラムの残りの部分 ( 図 2 では 8 行目 ) が、実際に ッドは、オプジェクトに対して適用されるものです。 1 っ プログラムに何かをおこなわせる部分です ( この例では、 のクラスから複数のオプジェクトを作成した場合、メソッ 文字列を表示させています ) 。 ドは各オプジェクトごとに適用されます。つまり、さきほ System というのは、 Java のライプラリで用意されて ど例に挙げた、、本 " クラスの場合であれは、、、、広辞苑 " の いるクラスの 1 つです。この System クラスには out と 冗むメソッドが対象とするのは、、広辞苑 " オプジェクト いう変数があります。変数にアクセスするには ( ピリ であり、、、 C 十十 Primer' の、、読む " メソッドが対象とす オド ) を使います。さらに、メソッドの呼出しにも . を るのは、、 C 十十 Primer" オプジェクトであるということ 使います。したがって、 になります。 System. out . println 一方、クラスメソッドは、クラス本に対する操作をお では、 System クラスの out 変数の println メソッドを こなうメソッドです。オプジェクトがいくつあっても、ク 呼び出していることになります。 println は、引数の文字 ラスに共通な処理をおこなう場合に使われます。上と同じ 列を出力するメソッドです。 例でいえば、むメソッドに static というキーワード メソッドを呼び出すときなど、文の末尾にはかならす が付いていると、、、広辞苑を読む " も、、 C 十十 Primer を ( セミコロン ) を付けます。 読む " も、どちらも、、本を読む " という処理とみなすよう Java では、習慣的にクラス名は大文字で、メソッドや なものです。 ma ⅲメソッドは、クラスメソッドであると 変数名などは小文字て始まるように書きます。これはあく 決められています。 まて習慣なので、メソッド名を大文字て始めたからといっ その次の void は、 main メソッドカ唳り値をもたない てコンパイルできなかったり、実行できなくなるわけで ことを示します。 はありません。しかし、このような習慣に従っていれば、 最後の、、 String[] args" は、、、コマンドライン引数 " と ほかの人が読むときにも分かりやすくなります。図 2 の いいます。そのプログラムを起測けるとき、パラメータを 場合も、 HelloWorld や System はクラス名、 main や 渡すことができます。 println はメソッド名だということが一一目で分かります。 たとえは、このフログラムを起動 - す - るときに Java は、フリー・フォーマットの言語です。つまり、 % j avac He110Wor1d myparam この例のソースコードのすべてを 1 行に書いても、あいだ に空白行を適当に挟んでも正しく動きます。ただし、これ と指定すると、 args 引数に myparam" という文字列が にも習慣的な書き方があります。これらの記法は、「 Code 渡されます。このイ督目みを使えは、 main メソッドて利用 Conventions for the Java Programming Language する値をプログラムの起重加寺に指定することができます。 ニ二ロ 95 UNIX MAGAZINE 2003.1

9. UNIX MAGAZINE 2003年1月号

、厘瘋ロ區第痙何可国保底應庵同 日 Ed Te W ⅲ 00W5 いし 第 0 第 日 Edit Text W ⅲ 00W 、 図 8 object 05d ・・ p 「 " $ れ物は . 十 $f3 物 $ に广 図 6 Edit モードの Patcher ウインドウ et ・ s PIay with UNIX ⑩ モードでは、、グー " になる ( 図 7 ) 。 第、 0 ろる 日 Ed 捉 Te W ⅲ 00W 、 い b 0 第 HeIp 図 9 jpatcher 日 Edit Text W ⅲ 00W 、 HeIp 工な口同第 0 亘戸 0 戸广ロ . ー $ ⅱいーをン 図 10 inlet と outlet 日 Edit Text W ⅲ dO 、 $ HeIp p 「・・ $ は . 十 $f3 画 $ f2 广 0 い・ 十・・ 2 図 7 Lock モードの Patcher ウインドウ 、廬何対宿匠獰保底何新 ロコ 図 11 fork 日 Ed Text Windows 、・匣區国何ⅸ彦儚厂優 HeIp 図 12 jcomment 日 Ed Text W ⅲ dO 、、 HeIp HeIp HelP ジェクトになる。もちろん、 出力の数や未も変化する。 jpatcher ( 図 9 ) オプジェクトによって入 ふ庫第疉第周区廖無厂覆ロ オプジェクト名 汎用オプジェクトで、オプジェクト名を入力して使用す object ( 図 8 ) ツーノレヾーの左側から順にみていこう。 る。たとえば、 150 unpack" と入力す川ま unpack オプ Patcher ウインドウ内に patcher を作成するオプジェ クト。 patcher オプジェクトのなかに patcher オプジ ェクトを作り、パッチを言当することもできる。このオ プジェクトにはどんな名前を付けてもかまわない。ただ し、ほかのオプジェクトからその名前で呼び出せるわけ ではなく、たんに人間がほかのオプジェクトと区別する ためのものである。 inlet ( 図 10 左 ) patcher への入力 ( ほかのオプジェクトからの処理要 求 ) を受け取るためのオプジェクトである。 outlet ( 図 10 右 ) patcher からの出力 ( ほかのオプジェクトへの処理要 求 ) を渡すためのオプジェクトである。 fork ( 図 11 ) 信号を分岐させるためのオプジェクトである。 jcomment ( 図 12 ) パッチの名称やコメントを書き込むためのオプジェクト である。 messconst ( 図 13 ) UNIX MAGAZINE 2003.1

10. UNIX MAGAZINE 2003年1月号

特集・プログラミング入門 「クラスとオプジェクトを使う」の項でちょっと触れたよ うに、オプジェクトのメソッドを呼び出すには . を使い ます。 9 行目と 14 行目では、オプジェクトのデータに値を直 接設疋しています。 9 wega ・ channel 14 aquos . channel channel 変数は public と指定されているため、 うに値を外部から直接設定することができます 10 文字列の結合 このよ 16 ~ 21 行目では、結果を確認するためにオプジェクト の変数の値を出力しています。 この部分では、 、、十 " を用いて変数の内容を出力してい ます。この十は足し算を表すものではなく、、、文字列の連 結 " を表します。十の左右どちらかに文字列がある場合は、 自重加勺に文字列の連結と認識されます。 たとえは、 16 行目では、、” WEGA: ” " という文字列に 続いて十カ甘旨定されているので、この十記号は文字列の連 結として働き、変数 wega. size の内容力蚊字列として出力 されます。テパッグ用に変数の値を確認するような場合、 変数の型などを意識する必要がなくてイ叫リな書き方です。 では、次のようなソースコードをコンパイルして実行し たら、どのような出力か得られるでしようか。 class App UNIX MAGAZINE 2003.1 public のメソッドをとおしてアクセスするようにすべきです。 変数に値を設定するときは "setChannel(int channel)" のような 来は、データは外部からアクセスできないように private と宣言し、 トの変数に妾アクセスできるのはあまりよいことではありません。本 10 ただし、クラスの言という観点からみると、このようにオプジェク なぜこのように出力されるかは、自分で考えてみてくだ 10 5 + 5 55 5 + 5 % java App 結果は次のようになります。 System. out . print1n()5 十 5 System. out. print1n()5 + 5 public static void main(String ロ args) 文字列を使う こまではとんど説明せすに使ってきた言葉に、、文字 列 " があります。文字列とは、連続した一漣の文字のこと です。 さきほど、「糸Ⅲムみ型」の項で char 型のリテラルについ て説明しました。 char 型のリテラルとは、 'A' や '\n' の ように、シングルクオートで囲んだ 1 文字からなるデータ を表すものでした 11 文字列のリテラルは、以下のように ( ダブルクオ ート ) で囲んだ一連の文字データとして表すことができ " sample " string ます。 char 型の います。 C や C 十十で文字列を扱う場合は、 すでにみたように、 1 つの文字は組込み型 char で扱 string\n' / / 空の文字列を表す文字列リテラル 11 '\n' は 2 文字あるように見えますが、これで 1 つの、、子コード " を クタを呼び出した場合とまったく同しです。 作成される strl オプジェクトは、明示的にコンストラ String strl sample string 方も許されています。 String クラスは頻繁に使われるため、次のような書き いる String オプジェクト strl が作成されます。 これで、、、” sample string ” " という文字列を一尉寺して String strl = new String("samp1e string") ; ンストラクタを new 演算子て呼び出します。 たオプジェクトの作成と同じ要領で、 String クラスのコ String オプジェクトを作成するには、さきほど説明し という利点があります。 String クラスに用意されている豊富なメソッドが使える おこないます。文字列を Str ⅲ g オプジェクトで扱うと、 のように配列を使うのではなく、メソッドを呼び出して して扱うのです。そのため、文字列の操作は、 C や C 十十 Java では文字列は系Ⅲムみ型 char ではなくオプジェクトと Java では、、 string オプジェクト " を使います。つまり、 配列 " という char 型を並べたようなものを使いますが、 表すので 1 文字とみなします。 103