6_クラス


クラスです。
class ClassName{
//いろいろ
}

ってやつです。

まず動画のプログラムコード(余談ですが、動画のVOL5はクラス名が06だったのにVOL6では08になってる)
using System;

class test8{
    public static void Main(){
        Rectangle ra = new Rectangle();
        ra.tate=30;
        ra.yoko=100;
        Console.WriteLine("tate:"+ra.tate.ToString()+"yoko:"+ra.yoko.ToString());
    }
}

class Rectangle{
    public int tate;
    public int yoko;
}

しばらくの間は
クラスを作ったら、なぜかnewしないと使えない(ある方法でnew無しでも使えるが今は説明省略)って覚えておけばおk。
今は理由はわからなくてもとりあえず使ってたり作ってたり遊んでたりするうちにわかってきますよ。
クラスやオブジェクトが設計図とか具体的なものとか、なんかそういう比喩はあまりきにしなくていいよ。
だいたいただの電子データ(?)に具体的なものとか今聞いてもよくわからないし。
しばらくのうちは自分で大規模なクラスを作る機会なんてなく、他人が作ったクラスを利用するだけ。
(動画の作者様、せっかく説明したくれたのにスマンw)
newを使うメリットは慣れれば段々わかってきます。
今はクラス名(ここではRectangle)とその作ったクラスにnewされた名前(ここではra)、二つ作る必要があると、覚えておくべき。
なぜわざわざ二つも作成すのかとか今はわかるはずないから考えなくておk。

あとクラスの名前(ここではRectangleは最初が大文字、それで作ったraは最初が小文字に注意。
別にそうしなければコンパイルできないとかバグるとかはないけどそれが「常識」になっています。
最初が大文字だと「クラスの名前」だってわかる。
最初が小文字だと「クラスからnewしたものの名前」(インスタンスとかいいます)だってわかるからね。

using System;

class Test8{
    public static void Main(){
        Rectangle ra1 = new Rectangle();
        Rectangle ra2 = new Rectangle();
        ra1.tate = 30;
        ra1.yoko = 100;
        ra2.tate = 600;
        ra2.yoko = 200;
        Console.WriteLine("tate1:"+ra1.tate.ToString()+"yoko1:"+ra1.yoko.ToString());
        Console.WriteLine("tate2:"+ra2.tate.ToString()+"yoko2:"+ra2.yoko.ToString());
    }
}

class Rectangle{
    public int tate;
    public int yoko;
}

ra1だけでなく、ra2も作ってみました。それだけ。

動画プログラム三つ目 クラスの中にshow()を入れる。
だいたい同じですがちょっと改変しました。
面積をもとめてみましょう。

using System;

class Rectangle{
    public int tate;
    public int yoko;
    public void Show(){
        Console.WriteLine("面積は"+(tate*yoko).ToString());     //Show()は面積を表示する命令です
    }
}

class Test8{
    public static void Main(){
        Rectangle ra = new Rectangle();
        ra.tate = 30;
        ra.yoko = 100;
        ra.Show();
    }
}

これで面積を出せます。

二つの数(x座標、y座標)を持ち、その距離の二乗を表示するクラスを作ってみます。
距離の二乗は(x*x+y*y)です。二乗を使わない距離はルート(√)を使うが、ルートの使い方はまだなので放置(Math.Sqrt等を使います)

using System;

class Di{
    public int x;
    public int y;
    public void Show(){
        Console.WriteLine("x*x+y*y=:"+(x*x+y*y).ToString());
    }
}

class Test8{
    public static void Main(){
        Di ra = new Di();
        ra.x = 3;
        ra.y = 4;
        ra.Show();
    }
}


だいたいこんな感じ.

応用っぽい話

ところで、動画の3:50あたりの説明文によると
クラスは定義しただけじゃ使えないって書いてる。
じゃあ↑のRectangleとかDiとかはNewしてるけどTest8は?定義しただけでまだnewしてないのだから
new Test8()とかやらないといけないはず。
でもMain()の中を一番最初に動かさなきゃいけないんだから、Test8の中にあるMainの中でTest8を実体化するのは不可能・・・

そこで使用されるのがクラスをnewしなくても動かせるstaticです。
staticって書いておくと、クラスをいちいちnewしなくても使用可能!だからMain()の前にstaticがあったわけです。
じつはConsole.WriteLine()もわざわざnew Console()とかやらなくても使えたでしょ?
つまりWriteLineは(というかConsoleクラス自体が)実はStaticです。
この辺はそのうち動画でやると思います。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年11月03日 20:46