自分磨きのITノート

プログラミング(C#、VB.NET)言語やデータベースの役立つ情報を初心者から中級者向けに発信します。

C#でプログラミング入門 - クラスとは

前回は、構造体を説明しました。今回は、いよいよクラスです。

今、殆どのプログラミング言語(C#以外)でもクラスを使ってプログラミングが出来ます。
ここ十数年、長く使われ続けているクラスは、プログラミングを行う上で重要な存在です。

クラスは、抽象化した構造を作るのに向いています。モノを作るために必要な設計図みたいなものです。例えば、車のベースの設計図があるとしたら、それから様々な車種の設計図を派生して作れるようなものに近いです。設計図(クラス)から実物になったものをオブジェクトインスタンスと呼んだりします。

クラスの利用は、変数や関数をグループ化して独自の型を作成できます。

Windows上で役に立つツールを手軽に作りたい!となると、.Net Frameworkを利用することになります。.Netは、Windowsを操作するDLL(API)をラップしたクラスがたくさんあります。それにはある程度クラスは避けて通れません。しかし、最初からすべて理解することは難しいと思います。でも、「なんちゃってプログラム」でも構文エラーにならなければ動いてしまいます(^∀^)

最初は、いろいろクラスに触れながら「どう動く」を理解していけばよいのです。
以下、クラスの代表的な3つの機能を紹介していきます。

・カプセル化(隠ぺい化)

内部の動きを隠すことができる。⇒利用者は、やりたいことの関数を呼べば、内部の動きを気にする必要がない。
外部から内部変数の直接な変更をできないようにして、主コードと分離ができる。⇒汎用性が高くなる。

・継承

親(基底クラス)の属性/関数/イベントを受け継いだ子(継承クラス)が作れる。

・多態性

基底クラスのオブジェクトに継承したクラスのオブジェクトを代入し、振る舞いを変化させる「ポリモーフィズム(多態性)」が使える。

他にも、クラスにはたくさんの機能があります。何ページにもなる本があるくらいですから。
オブジェクト指向(クラス及び構造体)プログラミングは、追々進めていきましょう。

クラスの構文から見ていきましょう。

クラスの構造

アクセス修飾子 Class クラス名 {
  内部変数
 イベント定義  プロパティ定義  メソッド定義etc }

クラスの利用方法


続きを読む

Windowsプログラミング入門 - (無償版)Visual Studio Community 2017インストールとプロジェクト作成

Windows上で動作するアプリを作成する場合、画面(ユーザインターフェース:UI)をソースコードでゴリゴリ書くのは非効率です。Microsoftから提供されている統合開発環境(IDE)Visual Studio(以下VS)を使えば色々なツールやUIデザイナーが付いてきて便利です。

.Net Framework上で動作するアプリケーションであれば、無償(無料)で開発することができます。学習用途で使用するなら、VSのCommunityエディションで十分です。今回はインストール方法を説明します。

また、VSのエディションについて下記にまとめてます。


Visual Studioエディション
エディション名  説 明
Community 学生、個人、中小企業、非営利団体向け。Professionalと同等の機能が使えるので、Windowsプログラミング入門するなら最適です。
個人で利用するならこれがオススメです(商用利用は制限あり)。
Express 誰でも利用可能。商用利用も可能。
VSについている機能・ツールやテンプレートは少ないですが、普通にソースコードを実行ファイル・ライブラリにコンパイルできます。2015シリーズは、デスクトップ・Win10アプリとWEBアプリの開発できるが、2017シリーズはデスクトップのみで、Expressは2017シリーズで最後になる模様。
Professional ほぼ開発する上で困ることのない基本エディション。
Team Fundation Serverの連携ができる。サードパーティ製品利用する場合もこのエディションからが多い。
Enterprise テスト・分析やXamarin拡張機能など豊富な拡張機能が使える。値段が高いのでほしい機能があるか要確認。


Visual Stadio Community 2017のインストール方法

続きを読む

C#でプログラミング入門 - 構造体

前回は、変数のスコープをやりました。今回は、構造体です。

構造体は、いくつもの変数をひとまとめにしてグループ化することが出来ます。後に説明するクラスと違い値型であるのが特徴的です。(値型については、前回の関数の参照型渡しをご覧ください)また、クラスより軽量であるため、大量のデータを扱うときに使用すれば、高速に処理が出来ます(差がほとんど感じられない場合もありますが)。クラスと使い分けて使用できれば、上級プログラマーの仲間入りですね(・∀・)つ

構文

アクセス修飾子 struct 構造体の名前{
        アクセス修飾子  変数;
        アクセス修飾子  変数;・・・
        public 構造体名(引数){
            初期化;
        }
    }

C#

public class Kouzoutai{
    public struct person{
        public string name;
        public int age;
        //private weight; // privateを書くとコンパイラによってはエラー
        public person(string nm,int ag){
            name=nm;
            age=ag; 
        }
    }
    public static void Main(){
        person p1;
        p1.age = 15;
        p1.name = "hoge";
        System.Console.WriteLine("name={0},age={1}",p1.name,p1.age);
        person p2 = new person("foo" ,23);
        System.Console.WriteLine("name={0},age={1}",p2.name,p2.age);
    }
}

結果

name=hoge,age=15
name=foo,age=23


最初に、personという構造体を定義しています。変数の前にpublicというアクセス装飾子が付いています。これは、外部から変数にアクセス出来ることを意味しています。詳しくは、クラス変数のスコープなどで説明します。privateというアクセス装飾子もありますが、構造体で使うとコンパイルエラーになる場合があります。

person構造体内にnameage変数を定義しています。

下にはperson(){~};と記述しています。これは関数と違って少し特殊なものです。コンストラクタと呼び、構造体をnewしたときに処理されます。構造体の初期化などに使用します。

main関数内では、「初期化せずに値をセットする方法」と「newして初期化する方法」のサンプルです。構造体の内部変数への参照は、ドット(.)を使い、"構造体変数名.内部変数"と書きます。
newもコンストラクタが呼ばれ値がセットされている様子が分かります。

最後に、Console.WriteLine関数でフォーマットを指定して出力しています。
WriteLineの第二引数が"{0}"に入り、第三引数が"{1}"に入る書き方です。第四引数もあれば"{数字}"で追加できます。このフォーマットというものは、固定の文字列の一部を加えるときに重宝します。フォーマットされた文字列を返すString.Format(文字列,第一引数,第二引数・・・)関数でも同じようなことが出来ます。


構造体の余談

続きを読む
スポンサードリンク
自己紹介
【管理人】
なみやん
【コメント】
プログラムを組むことが大好きな30代男性。IT系の仕事を10年ちょいやっています。このブログを通して知識を人に伝えることによって、自分をさらに磨こうと精進しています。応援よろしくお願いします。
免責事項
当サイトで紹介しているサンプルソースコードは自由に使用いただいても結構が、自己責任でお使いください。また、記事の内容が主観的であったり、努力していますが正しくなかったりする場合がございます。読者本人の判断にお任せいたします。