新規記事の投稿を行うことで、非表示にすることが可能です。
2019年11月16日
【9日目】英語版Udemyで学ぶ!C#
進捗58%
ようやく、GUI部品の学習を完了し、DB連携アプリの作成に移る。今までは知識の学習という感じだったが、ようやくアプリ作成など実践的になり、面白くなってきそうな予感。
■セクション11:WPF(続き)
ラジオボタンとパスワードボックスとプロパティ、データ、イベントによるトリガーに関して学習した。マウスオーバーなどのイベントでGUIを更新する仕組みに加えて、データやプロパティが変更された際もGUIの更新ができる仕組みがある。
以前、コントロールの一覧があれば、便利と書いたが、こんなのがもうあるじゃん。
パスワードボックスも検索すると出てきて、動作もコードもわかる!便利!
XAML Controls Gallery
1、コントロールがたくさんあるので"passwordbox"で検索をする。
2、検索結果が1つ出るのでクリックしてみる。
3、passwordboxの詳細表示。コントロールの動作(”●●●”はパスワードの入れた状態)を見れて、その下に対応するコードが出ている。
■セクション12:C#でデータベースを扱う
このセクションでは、Microsoft SQL ServerをインストールしてC#でDB連携を使ったアプリケーションを作成する。アプリケーションは様々な地域の動物園の動物を管理するアプリケーションで、必要に応じて動物園や、動物の追加、削除などが行える。
まずMicrosoft SQL Server 2019のインストールとデータベーステーブルの作成から開始する。SQLサーバーのインストールはDeverloperエディションを何の問題もなくインストール完了。
Visual Studio 2019にDBを接続し、テーブルの作成を開始し、さらに、アプリケーションのプロジェクトの関連付けも行っておく。
作業の概要を説明してからスタートかと思い、何もしないで動画を見ていたら、すでにデータベース作成がスタートしている!慌てて、動画を止めて、再度さかのぼって再生して、データベースの作成を開始。
■次は
セクション12 を続ける。このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:SQL SERVER WPF
2019年11月15日
【8日目】英語版Udemyで学ぶ!C#
進捗55%
動画を視聴後、手を動かしながら、サンプルをもとにコーディングをして遊びながら進めてる。
■セクション11:WPF(続き)
引き続きGUI部品の勉強を続ける。依存属性、データバインディング、通知インタフェイス、リストボックス、コンボボックス、チェックボックス、ツールチップの学習を行った。
依存属性
XML形式で属性を細かく指定し、ボタンにマウスオーバーした際に、テキストのサイズを変更したり、することができる。フォントサイズ、フォントの種類、背景色。。。たくさんの属性があるので、実際にやりたいことが出てきた際に調べながら実装するという感じかな。
データバインディング
テキストボックスとスライダバーの同期をコントロールする。これも同様にXML形式で同期の仕方を下記のように細かく指定できる。
・oneway:同期対象(スライダー)が変更されたときのみ同期
・twoway:同期対象(スライダー)とテキストボックスのどちらかが変更されたとき同期
・onetime:アプリを起動したときのみ同期
リストボックス、コンボボックス、チェックボックス、ツールチップ
これらに関してもXAMLで簡単に実装ができることがわかった。1つ1つ細かく覚えるというよりは、動作の概要を把握して、それを実現するために調べながら実装する感じでよさそうだ。
コントロールの設定を変えながら比較したり、動作を見れるテストアプリがあると動作の概要把握に役立ちそうだ。
■次は
セクション11 WPFの学習を終わらせる。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:WPF
2019年11月14日
【7日目】英語版Udemyで学ぶ!C#
進捗52%
順当に進めている。
■セクション10:応用C#
正規表現を学ぶ。
正規表現に関しては、習得済なので、さらっと動画を視聴するだけにした。VisualStudio2019で検索のウインドウで、検索文字列に正規表現を入力すると、該当のテキスト部分がハイライトする。これを使いながら、正規表現の説明を行っている。これは正規表現を実際に検討する際にも使うことができそうだ。
講座の中では正規表現を簡単にまとめたsnipetがあり、これを見たりしながら、URLや電話番号などをフィルタリングする正規表現を作った。
■セクション11:WPF
いよいよ、GUIの部分のWPFの説明に入った。ボタン、グリッド、リストボックス、イベントに関しての学習をする。このコースは全体的にいろいろな機能の紹介をする形で講義が進んでいく。このため、それぞれの機能の特徴や使い方を多岐にわたって、学習することができる。
GUI部品の配置
マウスを使ってボタンやリストボックスなどのGUI部品を配置する方法と、XAMLと言われるxml形式で配置を記述する方法や、直接GUI部品のオブジェクトをソースコードに記載する方法で作成することができる。
ソースコードに記述することにより、動的にボタンを出現させたりすることができると思われる。
ボタン
ボタンの作成方法から、イベントハンドラの設定までを行う。イベントハンドラは様々なものがあり、クリックした瞬間にボタンが反応したり、クリックを解除(マウスアップ)した際に、ボタンが反応したりするように設定ができる。
■次は
セクション11 WPFの学習を続ける。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:WPF
2019年11月13日
【6日目】英語版Udemyで学ぶ!C#
進捗49%
順調ではあるが、不覚にも寝坊してしまい、時間があまりとれなかった。
■セクション10:応用C#
ラムダ関数
無名関数ともいわれ、関数名のない関数を作れる機能だ。pythonなどほかの言語にも同様の機能がある。pythonと違い、"lambda"のキーワードは書く必要はない。代わりに、"=>"のlambdaオペレータを書く。ラムダ関数はdelegateを使って書き換えることが可能だ。
Lambda expressions
アクセス修飾子
public:どこからでもアクセス可能、protected:派生クラスからアクセス可能、private:クラス内のみからアクセス可能。何も指定しない場合は、internalというのになる。
internalは同じプログラムないからはアクセス可能になる。
アクセシビリティレベル
リスト、配列、リスト配列
リスト、配列は同じ型のみを保持可能。リスト配列(ArrayList)は様々な型のデータを混在して保持することが可能だ。
このほか、構造体、列挙子、数学クラス、ランダム関数に関して学ぶ。
■次は
セクション10:応用C#の正規表現を学ぶ。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:C#
2019年11月12日
【5日目】英語版Udemyで学ぶ!C#
進捗46%
順調には進んでいる。今回の講座は1つ1つの動画の長さが結構バラバラで、長いときは20分くらいかかるものもある。新しくC#を勉強する人はこの部分で進みが悪くて少しストレスを感じるかもしれない。
自分の場合は現状は復習中心のため、2倍速や1.5倍速で見ながら進めているので大きな問題ではないが。。。
■セクション8:継承とオブジェクト指向
引数の異なる複数のコンストラクタを用意する、いわゆるオーバーロードが可能。派生クラスのコンストラクターのパラメータ初期化の際にベースクラスのコンストラクタを"base"を使って呼び出すことが可能。
インターフェイスを定義して、このインターフェイスを実装するクラスを定義し、インターフェイスを公開する方法を勉強した。
■セクション9:多態性とオブジェクト指向
派生クラスで親クラスのメソッドと同一のインターフェイス仕様の関数をオーバーライドが可能。ベースクラスでオーバーライド可能な関数をvirtualをつけて宣言。派生クラスでオーバーライドする際に、overrideをつけて関数を宣言する。
これ以上、派生させたり、オーバーライドしてほしくない場合は、sealedをつけて宣言する。
派生クラスを実行する際に、ベースクラスの変数で変換して、メソッドを実行するとベースクラスのメソッドを実行することができる。
また、1つのクラスに別のクラスのインスタンスをメンバとして持つことにより、has-aの関係を表現することができる。なお、is-aの関係はクラスの派生で表現可能。
例)
・is-aの関係:ラクダは動物
・has-aの関係:ラクダは足を4本持っている。
多態性の勉強の後になぜかファイル入出力の説明がある。まあ、そのうち知らなければならないので問題はないが、ちょっと唐突感がある。。。
テキストを読み込む方法から2つを勉強した。@テキスト全体を読んでしまう方法、A1行ごとに読み込み、配列に保持する方法。
これに対応して、テキストを保存する際も、同様のことが可能。これに加えてStreamWriterを使った保存方法も学んだ。
StreamWriterは,8個コンストラクタがあり、ファイルパスを指定するだけでなく、ファイルパスの代わりに、streamを指定したり、エンコーディングやバッファサイズ、テキストの追加モードのフラグなどを指定可能。
デフォルトはエンコーディングはutf-8,追加モードはfalseとなっている。
■次は
セクション10:応用C#のラムダ関数からスタート!
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:C#
2019年11月11日
【4日目】英語版Udemyで学ぶ!C#
進捗41%
快調ではあるが...
今回の講座は30時間(いつもは10-15時間)と、いつもの約2倍の時間になっているので、いつもの感覚でやると2倍速で進んで雑になってしまうので注意して進める必要あり。
■セクション7:配列(続き)
そろそろ、チャレンジの問題が本格的になってきたので、実際にコーディングしてみる。
〇ゲーム(tic tac toe game)を作るチャレンジだ。結構、手がかかるが面白い。
手本では、クラスを使わない解答が説明されていたが、クラスを使って実装してみた。
だいたい、思った通りに、C#のコーディングはできているようだ。
配列で怪しいところがあったのでメモ。
ArrayList:
複数の型のオブジェクトを保持可能
メソッド:
Add:追加
Remove:削除 値
RemoveAt:インデックスを指定して削除
ループの際:
obj is int ...などで型を特定して処理する。
Jagged Array:
配列の配列。長さの異なる配列を保持可能。型は統一する必要あり。
生成:
string[][] familylist = new string[][]
{
new string[]{"taro", "jiro","saburo"},
new string[]{"hanako","shiro"},
}
値の取得:
foreach(string[] family in familylist)
{
foreach (string person in family)
{
Console.WriteLine(person);
}
}
■セクション8:継承とオブジェクト指向
クラスの継承の学習。そろそろ、コードを書いたほうが良い気がしてきた。
チャレンジもよく見ると初心者以上向けの問題に加えて、応用問題がついていることに気づいたので、これをやってみることにする。
■次は
セクション8を続ける。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:C#
2019年11月10日
【3日目】英語版Udemyで学ぶ!C#
進捗36%
順調。
■セクション6:オブジェクト指向プログラミング
classの続き。propertyを学ぶ。これはちょっと知識が怪しかったのでメモしておく。
1、変数宣言:
public int width;
(privateの場合は、"_width"としたり、camelCaseにするらしい)
2、プロパティ化:
public int Width;
(プロパティは慣例上PascalCaseにするため、"W"を大文字にする))
3、プロパティへのアクセス追加:
Tips! "prop"を入力後[tab]キーをダブルクリックすると雛形が出てくる。
//get, setともに可能
public int Width {get; set;};
//getのみ
public int Width {get;};
//getの内部実装を入れてもよい。
public int Width {
get{ return width}
}
プロパティの注意点:
・get/setでアクセス範囲を変えない。
・デフォルト値を指定しておく、設定順序変わってもそれなりに動くように
・setで例外をスローする場合は元の値を保持する
・getで例外を発生しないように
・名称に関して
・名詞、形容詞で
・コレクションプロパティは複数形で
・ブール型プロパティは接頭辞にIs,Can,Hasを追加も可。
(参考)
プロパティのデザイン
型のメンバーの名前
■セクション7:配列
配列を学ぶ。配列の作成方法は下記の通り。生成方法が怪しかったのでメモ。
1次元配列の作成方法:
int [] grand = int[5];
int [] grand = {1,2,3,4,5};
int [] grand = new int [] {1,2,3,4,5}
2次元配列の作成方法:
int[,] grand = {
{1,2},
{3,4}
};
■次は
セクション7をこの調子で終わらせる。
このコースへのリンク
Complete C# Masterclass
全般ランキング
2019年11月09日
【2日目】英語版Udemyで学ぶ!C#
進捗29%
順調、まだしばらく基礎的なところが続く。それぞれのセクションの途中にチャレンジがあり、プログラムの問題演習があるので、それをキッチリこなしながら、動画は1.5倍速で見ながら進む。また、セクションの最後に簡単な小テストもこなしながら進んでいる。
■セクション3:関数とメソッド、そしてどうやって時間を短縮するか(続き)
関数とメソッドの作り方を復習した。
■セクション4:判定
if/else/switch判定。if/else/switch判定。ユーザーIDを入力するチャレンジだが、ループをまだ習っていなので、エラーが起こると、終了するしかない。ちょっと面白くない。
■セクション5:ループ
for/while/do whileの勉強。ここまでくるとようやく複雑なプログラムが組めるようになってくる。
■セクション6:オブジェクト指向プログラミング
classを作成する。
■次は
セクション6が途中なので、続けて完了する。おそらく、知らないことが出てくるのはセクション10あたりになりそうなので、それまでは今のペースで進めたい。
このコースへのリンク
Complete C# Masterclass
全般ランキング
2019年11月08日
【1日目】英語版Udemyで学ぶ!C#
進捗15%
順調な滑り出し。C#の基本の復習からスタート!
■セクション1:初めてのC#プログラムとVisual Stdioの概要
環境の準備と初めてのプログラムの実行。今回は現状の最新版のVisual Studio 2019を使用する。
若干、フライングをしてVisualStudio 2019はインストールを完了しておいたので、サクッと終わらせることができた。
■セクション2:データタイプと変数
特にいうことなし。データタイプでなじみがないと思ったのは、decimal。
用途としては、精度が高ため、お金のからむ少数の計算の時にfloat/doubleの代わりに使うとよいらしい。
decimalとdouble/floatの違い
■セクション3:関数とメソッド、そしてどうやって時間を短縮するか
関数、メソッドの基本、引数の取り方、戻り値の返し方、アクセス制限など、だいたい把握していることを復習した。
■次は
セクション3が途中なので、続けて完了する。この辺の基本的な部分に関しては復習の位置づけが強いので、緩急をつけて集中してさらっと終わらせる。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ:C#
2019年11月07日
英語版Udemyで学ぶ!C#
はじめに
C#をマスターする!
講座名:Complete C# Masterclass
このコースの受講動機
C#は10年以上前に半年ぐらい使用したことがあるが、その際は.NET Frameworkは2.0だった。
現在、最新は.Net Core 3.0になっており、C#も7となっており、いろいろな新しい言語仕様やライブラリが導入されて昔に比べ、非常に魅力的なプログラミング言語になっていると思われる。
そこで、今回、仕事でも必要になりそう、というのもあり、一石二鳥ということでこの講座を受講し、C#を学びなおす。
このコース完了の際のゴールイメージ
・C#でのプログラミングを思い出す。
・C#7での言語仕様を理解する。
・WPFが何かを理解して使えるようになる。
・LINQを利用したDBの操作ができるようになる。
・Unityを使ったゲームを作成する。
コース詳細の紹介
・レクチャー数と時間
・209レクチャー、29時間のビデオ
・言語
・英語
・内容要約
・C#の基礎を学ぶ
・OOPを理解する
・Unity3Dでゲームを作る
・変数、メソッド、ループ、条件分岐を学ぶ
・美しいWPFのGUIアプリを作る
・エラーハンドリングとエラーの回避の仕方を学ぶ
・LINQとLambda関数の使い方を学ぶ
・受講に際しての前提条件
・C#のプログラミングを学びたい人
・Unity3Dでゲームを作りたい人
・WPFで美しいUIアプリを作りたい人
計画
・23日程度で完了するつもりで受講をする。
目論見としては、C#の基礎の部分は一度勉強しているのですぐに終わると予測、後半は通常通りの時間がかかると予測。
このコースへのリンク
Complete C# Masterclass
全般ランキング