オブジェクト指向でなぜつくるのか
「オブジェクト指向でなぜつくるのか」
ずっとC言語で構造化プログラミングしかしてなかった僕が
この本を読んでオブジェクト指向を勉強しました。
プログラムの歴史から書いてあり
なぜオブジェクト思考という考え方にいきついたのか?
という内容からはじまりUMLの基礎まで書いてありました。
かなりわかりやすく書いてあったので
これからオブジェクト指向を学んでいくという人にはお勧めです。
.
日々学んだ事や、感じた事などを書き溜めていこうかなと。
「オブジェクト指向でなぜつくるのか」
ずっとC言語で構造化プログラミングしかしてなかった僕が
この本を読んでオブジェクト指向を勉強しました。
プログラムの歴史から書いてあり
なぜオブジェクト思考という考え方にいきついたのか?
という内容からはじまりUMLの基礎まで書いてありました。
かなりわかりやすく書いてあったので
これからオブジェクト指向を学んでいくという人にはお勧めです。
.
ラベル:
本
投稿者
mezashi
時刻:
木曜日, 7月 05, 2007
0
コメント
VC2005で作成したバイナリファイルを実行すると以下のエラーが出た。
「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決する場合があります。」
へ?
.NETFrameWork2.0はインストールしても同じエラーが出る。
なんで??
調べてみると、どうやらライブラリを動的にリンクかけてるっぽい。
Visual C++ ライブラリのランタイム コンポーネントをインストールする必要があるみたい
ということで取得してインストールするとばっちし動いた!
ダウンロード先
http://www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=ja
アンマネージコードやと
コンパイルオプションの「C/C++」「コード生成」で
/MD オプションを /MT に変更すると大丈夫っぽいけど
マネージコードやと解らんかった。
なんか方法ないもんやろか?
.
ラベル:
.NET,
C++,
失敗談
投稿者
mezashi
時刻:
火曜日, 7月 03, 2007
0
コメント
ちょうど自分が異常系の定義について考えていた時に
「悪態のプログラマ」にこんな投稿がありました
異常系とは何であるか考えよう
自分の中での異常系の定義とは
・警告のダイアログを表示する
・エラーメッセージを表示する
のことやと決め付けてた。
自己定義が原因でプロジェクト内で意見が食い違っていたことが多々あり、
これじゃまずい!と感じて、異常系の定義をプロジェクト内で話あって認識を合わせた
このことによってテストの異常系を記述する際に悩まなくなったし、
テストシナリオにも統一性がとれて読みやすくなった。
そんな後で「悪態のプログラマ」でのこの記事を見つけて
異常系の解釈の違いがあるのは仕方ないことなんやとホッとしました。
それに、テストを想定して異常系の処理をあらかじめ決めておくことは
すごい重要なんですね。
ここは今まであやふやにしてきたところもあったので
これを気にしっかり決めていくようにしよう!
.
ラベル:
テスト,
メモ
投稿者
mezashi
時刻:
月曜日, 7月 02, 2007
0
コメント
ウィンドウを作る手順。
1、WNDCLASSEX構造体にデータを設定する
2、RegisterClassEx関数でクラスを登録する
3、CreateWindowEx関数でウィンドウを生成
CreateWindowEx関数でRegisterClassEx関数で登録した
WNDCLASSEX構造体の情報をもとにウィンドウを生成します
CreateWindowEx関数
http://msdn2.microsoft.com/en-us/library/aa930455.aspx
HWND CreateWindowEx( //戻り値 ウィンドウハンドル
DWORD dwExStyle, // ウィンドウの拡張スタイル
LPCTSTR lpClassName, // 生成するウィンドウクラスの名前
LPCTSTR lpWindowName, // ウィンドウの名前(タイトルバーに表示されます)
DWORD dwStyle, // ウィンドウスタイル
int x, // ウィンドウを表示する X座標
int y, // ウィンドウを表示する Y座標
int nWidth, // ウィンドウの幅
int nHeight, // ウィンドウの高さ
HWND hWndParent, // 親ウィンドウハンドル
HMENU hMenu, // メニューハンドル
HINSTANCE hInstance, // 実行exeのインスタンスハンドル
LPVOID lpParam // 生成時のメッセージで渡す引数
);
CreateWindowEx関数のリンク先に
拡張スタイルとスタイルの渡すべき値(Define定義されているもの)の一覧が
載っていますのでそれを参考にしてスタイルを指定します
次回簡単な例でものっけよ
ラベル:
C言語,
winapi,
メモ
投稿者
mezashi
時刻:
水曜日, 6月 20, 2007
0
コメント
テストプログラム作成したので貼り付けとこっと
C++のメンバメソッドにvirtual付けたときと付けない時の動作確認
C言語には無い概念…これめっちゃ便利やね。
一応関数ポインタを使えばC言語でも作れるんやけどめんどい!
--------------
#include
class Base {
public:
Base(){};
virtual ~Base(){};
void print();
virtual void vprint();
};
void Base::print()
{
printf("Base printf \n");
}
void Base::vprint()
{
printf("Base virtual printf \n");
}
class Foo :public Base {
public:
Foo(){};
virtual ~Foo(){};
void print();
virtual void vprint();
};
void Foo::print()
{
printf("Foo printf \n");
}
void Foo::vprint()
{
printf("Foo virtual printf \n");
}
int main (void) {
Foo* instanceFoo = new Foo();
Base* instanceBase = (Base*)instanceFoo;
printf("instance Foo\n");
instanceFoo->print();
instanceFoo->vprint();
printf("instance Base\n");
instanceBase->print();
instanceBase->vprint();
return 0;
}
--------------
ラベル:
C++
投稿者
mezashi
時刻:
水曜日, 6月 20, 2007
0
コメント
ウィンドウを作る手順。
1、WNDCLASSEX構造体にデータを設定する
2、RegisterClassEx関数でクラスを登録する
3、CreateWindowEx関数でウィンドウを生成
今回は
2、RegisterClassEx関数でクラスを登録する
です
RegisterClassEx関数について
http://msdn2.microsoft.com/en-us/library/ms633587.aspx
ATOM RegisterClassEx(
CONST WNDCLASSEX *lpwcx // ウィンドウクラスのポインタ
);
RegisterClassExに登録する前に WNDCLASSEX の各値を設定しておかないと
失敗する。戻り値に0(ゼロ)が戻ってきた時が失敗した時である
その場合は WNDCLASSEX で設定したウィンドウを生成することが出来ない
RegisterClassExで登録した WNDCLASSEX のデータは
アプリケーションを終了するまで削除されない
よって一度登録しておくと、登録したWNDCLASSEXのデータで
何度もウィンドウを生成することができる
完全なメモになってしまったや
まっいいかw
ラベル:
C言語,
winapi
投稿者
mezashi
時刻:
木曜日, 6月 14, 2007
0
コメント
過去の投稿で.NETでの実行ファイルパスの取得方法を記述しました
http://mzs184.blogspot.com/2007/02/blog-post_21.html
今回はC言語での実行ファイルパスを取得する方法を紹介します。
といってもいたって単純です
main 関数の引数として渡ってきているのそれを取り出すだけです
----
int main (int argc, char* argv[]);
----
argv[0] に実行ファイルパス(絶対パス)が格納されています
main関数の args, argv については別のサイトで詳しく調べて下さい
面倒だーって人は以下のソースをコンパイルして出来上がった exe に
ファイルをドロップしたりコマンドプロンプトで引数をつけて実行してみてください
いろいろわかるでしょう。
-----
#include <stdio.h>
int main (int argc, char* argv[]) {
int i = 0;
for (i = 0; i < argc;++i) {
printf("%s\n", argv[i]);
}
printf("press any key");
getchar();
return (1);
}
----
今日はwinapiはちょっと休憩^^;
ラベル:
C言語
投稿者
mezashi
時刻:
水曜日, 6月 13, 2007
0
コメント