この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
広告
posted by fanblog
2019年11月20日
【13日目】英語版Udemyで学ぶ!C#
進捗64%
少しずつ進めているが、またもや新しいセクションが追加されたため、進捗が止まったように見える。
追加されたのはイベントとデリゲートのセクションである。
■セクション13:Linq
LinqをXMLへ適用した場合に関して学ぶ。XMLデータをパースして解釈し、Descendantsメソッドで指定した要素でIEnumerable
何も考えずにコードだけ書いても理解が進まないので、XDocumentなど周辺知識を調べながら進める。
次にSQLへ適用した場合に関して学ぶ。
新たにVisualStudio2019に”Linq to SQL tool”を追加を行った。また、新規にSQLのDB作成を行った。
■次は
セクション13 を続ける。LinqをSQLへ適用した場合に関して学んでいく。
それとセクションの追加でセクションの数字かわっているため、この表記に関して見直しをする必要がある。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ: LinQ
2019年11月19日
【12日目】英語版Udemyで学ぶ!C#
進捗65%
順調。一つ一つの動画が15,16分程度で長めだがコツコツ進めている。
■セクション12:C#でデータベースを扱う(続き)
コントロールの情報の表示をリストボックスの選択状態に合わせて変更するようにし、動物園の動物データベースは完成した。■セクション13:Linq
Linqとは
Language-Integrated Queryの略語である。通常、SQLのQueryは文字列となるので、コンパイル時に時間はかからない半面、チェックがされなかったり、ほかの言語(XMLなど)の場合、別途、Queryを行うための別の言語を覚えなければならなかった。
LinqはQueryをメソッドやクラス、イベントで実現し、型チェックなどのコンパイル時のチェックが行われ、さらにSQL、XMLを統一的に扱うことができる。
対象とするデータ形式は各種DB、XMLのほかにも、IEnumerableやIEnumerable
IEnumerableリストのLinq
まずは独自でクラスを作成する。このクラスを要素としたIEnumerableリストを作成し、このリストへの操作を学ぶ。whereを使用して、条件に合った要素ののみの取り出しや、joinを使用して2つのリストからidの変換などを行い、該当の要素を出力したりを学んだ。また、orderby, oderby descendingを用いて、要素を順番に出力する方法や、新たにリストを作成する方法に関しても学んだ。
とりえず、foreachのループ処理を書かなくて済む、ということでコーディング量を減らすことができそう。
■次は
セクション13 を続ける。LinqをXMLへ適用した場合に関して学んでいく。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ: LinQ
2019年11月18日
【11日目】英語版Udemyで学ぶ!C#
進捗62%
順調。のんびり進めている。
■セクション12:C#でデータベースを扱う(続き)
データベースとアプリケーションの機能的な接続を行う。データベースへのデータの追加、削除などだ。以前、SQLを学んだが、実際にアプリケーションと連携をコーディングするとあたらためて、SQLの使われ方などがわかって楽しい。
■次は
セクション12 を完了させて、セクション13Linqに入る。
このコースへのリンク
Complete C# Masterclass
全般ランキング
タグ: SQL
2019年11月17日
【10日目】英語版Udemyで学ぶ!C#
進捗61%
今、気が付いたのだが、受講を進めながら、進捗の進みが悪いと思っていたら、新たに動画が追加されている!全体では、10動画くらい、”セクション4:デバッグ”のセクションも追加されている。
なのでさかのぼって追加されている動画を学習する必要が出てきた。
■セクション12:C#でデータベースを扱う
データベースの作成。データベース自体はとても簡単なリストなのでGUIベースでエントリを入れながら進む。
データベース作成後、アプリケーションの作成に取り掛かる。起動時に作成したDBとの接続を行う。
2つリストボックスを配置し、データベースの内容を表示する。一方のリストボックスで選択されたエントリに関連付けたリストをもう一方のリストボックスに表示する。
この表示を行う際にSQLを使って、関連付けれたリストを取得する。
SQLに関しては、以前に学習しているため、抵抗なく進められるのが楽だ。ただし、使うSQL文はinner joinなどを使用していて若干複雑なものだ。
■次は
セクション12 を続け、エントリの追加、削除機能などを実装してアプリを完成させる。
並行して、追加された動画は先に進むにあたって支障がなさそうなので、前に進めながら、少しずつ消化していくことにする。
このコースへのリンク
Complete C# Masterclass
全般ランキング
2019年11月16日
【9日目】英語版Udemyで学ぶ!C#
ようやく、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
全般ランキング
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:継承とオブジェクト指向
インターフェイスを定義して、このインターフェイスを実装するクラスを定義し、インターフェイスを公開する方法を勉強した。
■セクション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#