アジアンタムブルー [映画]
ストリップ修学旅行 [読書]
3日あれば海外旅行 [読書]
8月のクリスマス [映画]
C++ クラス -インターフェースクラス- [開発環境]
参考サイト
◆インターフェースクラス
名前の通り、クラスの一種ですが、少々特徴的なものです。 なお、単にインタフェースと呼ぶこともありますし、抽象クラスと呼ぶこともあります。 (インタフェースクラスという言葉は、C++以外で使われることが多く、どちらかというと C++ では使われる頻度の低い言葉ですが、 本サイトではこの言葉で統一します)。
インタフェースクラスは、メンバ変数を持たず、メンバ関数だけで構成されます。 そして、それらのメンバ関数は、宣言だけされていて定義がありません。 定義のないメンバ関数を持っている都合上、インタフェースクラスをインスタンス化することもできません。 一見、何のために存在しているか分からないですが、インタフェースクラスは、継承して使うためにあります。 そして、定義のないメンバ関数達は、オーバーライドして使います。
書式
// インタフェースクラスの定義
class IPen
{
public:
// 線を描く
virtual void DrawLine(int sx, int sy, int ex, int ey) = 0;
};
上のようにすると、IPen という名前のインタフェースクラスを実現できます。 繰り返しますが、C++には直接的にインタフェースクラスは用意されていません。 他の言語、例えば Java というオブジェクト指向言語なら「interface」というキーワードが用意されています。
これまでのクラス定義と違うのは、メンバ関数の宣言方法だけです。 最後に「=0」が付いており、これを付けると、そのメンバ関数の定義を省略できます。 定義が省略されるので、このクラスをインスタンス化することはできなくなります。 インスタンス化できてしまうと、定義が省略されたメンバ関数を呼び出そうとするかも知れないからです。
なお、先頭の「virtual」キーワードも必要です。 virtualの付いたメンバ関数を仮想関数というのでしたが、更に末尾に「=0」を付けると、純粋仮想関数と呼ばれます。
なお、クラス名の先頭に「C」ではなく「I」を付けました。 もちろんInterfaceの意味です。これは、通常のクラスとの区別に役立ちます。
このように、C++では、直接的にインタフェースクラスを記述できず、純粋仮想関数を宣言してやることで、 インスタンス化を妨害するような形で実現させています。
そのため、メンバ変数を追加したり、純粋仮想関数でないメンバ関数を加えたりすることもできてしまいます。 しかし、それらを加えた時点で、厳密にはインタフェースクラスとは呼べなくなります。 実際、Java の interface では、メンバ変数を宣言できなくなっており、メンバ関数も自動的に純粋仮想関数扱いになるようになっています (今は C++編なので関係ないですが、Java ではメンバ変数やメンバ関数という用語は使いません。また純粋仮想関数とも呼ばないです)。
コーディング例
先程定義した IPenインタフェースクラスを使ってみましょう。 前述の通り、インタフェースクラス(というより、純粋仮想関数を含んでいるクラス)はインスタンス化ができません。 そのため、必ず継承を行い、そのサブクラス側の方をインスタンス化することになります。
// pen.h
// CColorPenクラスで使う線の色
#define BLACK (0)
#define RED (1)
#define BLUE (2)
#define GREEN (3)
// インタフェースクラスの定義
class IPen
{
public:
// 線を描く
virtual void DrawLine(int sx, int sy, int ex, int ey) = 0;
};
// 黒いペンのクラス
class CPen : public IPen
{
public:
// 線を描く
void DrawLine(int sx, int sy, int ex, int ey);
};
// 色ペンのクラス
class CColorPen : public IPen
{
public:
// コンストラクタ
CColorPen();
// 線を描く
void DrawLine(int sx, int sy, int ex, int ey);
// 線の色を設定する
void SetColor(int color);
private:
// 線の色
int m_color;
};
まず、クラス定義は上のようになります。 インタフェースクラスといえど、C++ では普通のクラスと定義の方法自体は変わらないので、普通に継承できます。 そして、純粋仮想関数は、特別な形の仮想関数に過ぎないのでオーバーライドできます。オーバーライドした純粋仮想関数の定義の仕方についても、何も特別なことはありません。 普通のメンバ関数と同じです。ほとんど、オーバーライドと同じですが、メンバ関数の定義は次のようになります。
// pen.cpp
#include "pen.h"
// 黒い線を描く
void CPen::DrawLine(int sx, int sy, int ex, int ey)
{
// 黒い線を描く
}
// CColorPenクラスのコンストラクタ
CColorPen::CColorPen()
{
m_color = RED; // 赤いペンを初期カラーとする
}
// 現在設定されている色で線を描く
void CColorPen::DrawLine(int sx, int sy, int ex, int ey)
{
// m_colorを参照して、その色で線を描く
}
// 線の色を設定する
void CColorPen::SetColor(int color)
{
m_color = color;
}最後にmain関数を見てみます。// main.cpp
#include "pen.h"
int main()
{
CPen pen;
CColorPen color_pen;
pen.DrawLine( 10, 10, 100, 100 ); // 黒い線を描く
color_pen.SetColor( BLUE ); // 青色を設定
color_pen.DrawLine( 20, 20, 200, 200 ); // 青い線を描く
return 0;
}
やはりオーバーライドと変わりません(色は変えましたが)。 ここで、試しに次のようにしてみてください。
IPen ipen;
するとコンパイルが通らないことが分かります。 理由は IPenクラスには純粋仮想関数が含まれているからです。デストラクタを宣言するときに、virtualキーワードを付けると、仮想デストラクタになります。今の時点では理由が説明できないのですが、インタフェースクラスには仮想デストラクタを宣言しておくべきです。 ある状況下では、仮想デストラクタがないと処理が正しく行えません。 たとえ、デストラクタで行う処理がなくとも、仮想デストラクタだけは宣言しておきましょう。 そして、その定義は空にしておきます。
// インタフェースクラスの定義
class IPen
{
public:
// 仮想デストラクタ
virtual ~IPen(){}
// 線を描く
virtual void DrawLine(int sx, int sy, int ex, int ey) = 0;
};
B-50コンプレックス [健康]
LIFE STYLE B-50 コンプレックス(葉酸400μg配合)
- 出版社/メーカー: エープライム
- メディア: ヘルスケア&ケア用品
葉酸やビオチンなどの8種類のビタミンB群が全て摂取できる、天然サプリメントです。
◆ビタミンB1
ビタミンB1は、抹消神経のはたらきを正常に保ち、脚気(かっけ)を防ぎます。B1が不足すると、脚気、手足のしびれ、腰痛など反射神経の異常がみられます。また、食欲不振、消化不良、下痢などをおこしやすくなります
◆ビタミンB2
ビタミンB2は、健康な肌や髪をつくり、粘膜を保護します。B2は、がんや生活習慣病の予防にも効果的といわれています。口内炎や口角炎、目や舌、唇の粘膜異常、肌荒れ、髪のトラブルは、ビタミンB2の欠乏が原因かもしれません。
◆ビタミンB6
ビタミンB6は、脂質の代謝をよくして、脂肪肝を予防します。また、月経前症候群の症状をやわらげる効果や、つわりをやわらげるといった女性にかかわり深いビタミンでもあります。B6が不足すると、神経過敏、眠れない、胃がただれる、つわりがひどくなるなどの症状があらわれます。
◆ビタミンB12
ビタミンB12は、悪性貧血を予防して、神経細胞を正常に保つビタミンです。ビタミンB12の欠乏によって、悪性貧血になると、だるさ、めまい、動悸、息切れのほか、手足のしびれや精神的落ち込みなどの症状があらわれます。
◆ナイアシン
ビタミンB3とも呼ばれる。
ナイアシンには、血液の流れをよくする作用があるので、 皮膚の細胞まで栄養が運ばれ、お肌の新陳代謝も活性化されます。
そのため、ナイアシンには、紫外線などによる日焼け、加齢によるシミやソバカス、毛穴の黒ずみ などへの改善の効果があるといわれています!
また、アルコールを摂取すると体内にアセトアルデヒドという物質が作り出されます。 アセトアルデヒドは悪酔いや頭痛、吐気などの気分が悪くなる症状の原因になりますが、 ナイアシンはこのアセトアルデヒドを分解する効果もあります
◆葉酸
ビタミンM、ビタミンB9、プテロイルグルタミン酸とも呼ばれる。
細胞分裂のキーとなる核酸やチミンの合成に補酵素として働きます。そのため葉酸は新陳代謝や細胞分裂が活発な組織で必要になるビタミンです。爆発的な細胞分裂をして急激に成長していく胎児や消化器官の粘膜,赤血球の製造などで葉酸は必要になります。
葉酸の効果・効能は、神経管欠損症(NTD)など胎児の先天性奇形の予防や心臓病の予防効果や肺ガン,直腸ガン,子宮頸ガン,貧血の予防,母乳の出を良くするなどです。
◆ピオチン
ビタミンB7とも呼ばれる。
皮膚の健康を保ったり、筋肉痛を緩和したりといった働きをしています。皮膚炎を起こすヒスタミンの産生を抑える働きがあると考えられています。美肌や美しい髪に欠かせないコラーゲンの生成にも、ビオチンは一役買っています。
・白髪、脱毛、禿げの予防
・筋肉痛を和らげる
・アミノ酸、脂肪の代謝をサポートする
・糖質湿疹、皮膚炎を緩和する
・甲状腺、生殖器官を正常に保つ
◆パントテン酸
ビタミンB5とも呼ばれる。
糖質、脂質、たんぱく質の代謝とエネルギー産生に不可欠な酵素を補助する役割をしています。また、コレステロール、ホルモン、免疫抗体などの合成にも関係しています。これらのことから、皮ふや粘膜の健康維持を助ける働きもしています。
・風邪にかかりにくくする
・傷の治りをよくする
・脂肪と糖のエネルギーへの転換に不可欠
・副腎が正常な機能を果たすのに不可欠
・正常な成長の維持、神経中枢系の発達を助ける
・コレステロールと中性脂肪を下げる
ロジカル・コミュニケーション力強化セミナー【1/3】 [セミナー]
職場で受けた「山村経営コンサルタント事務所」の「ロジカル・コミュニケーション力強化セミナー」の内容を簡単にまとめました。9:00~17:30の大変密度の濃い内容でしたので、ここで全てを書くことはできません。配布されたボリュームのある資料からセミナーの流れと要旨がわかる程度にしました。
1.職場でのコミュニケーション
◆コミュニケーションの大切さ
「コミュニケーション」とは一般的には「伝達者の報告・考え・意見・相談事などの情報を他人に知らしめて、その結果として好意的な反応を起こさせる行為」であると言われている。
コミュニケーションが悪い場合の弊害
- 職場に活気がない
- 作業工程を見つめなおす機会を逃している
- 相互不干渉となる
- 助け合いや連携が見られない
- 相手のことを本心から気に掛けることができなくなる
コミュニケーション力は、学習と訓練によって大いに習得・強化することが可能。
コミュニケーションの基本
- 相手を尊重する
- 相手の感情に配慮し、相手の性格や価値観を踏まえる
◆コミュニケーションが成立するための要件
効率・効果的コミュニケーション
- 内容と目的を明確に
- 相手に適した判り易い伝達方法を用いる
- 信頼関係を確立・維持しておく
- フランクに話し合え雰囲気
- 内容は、明確で判り易く
- 環境や時期・タイミングを考慮する
- 相手の反応を把握する
- 相手に対し先入観や偏見を持たない
- 話す内容を出来るだけ構造化する
- 伝達方法の工夫改を心がける
◆論理的なコミュニケーションはなぜ必要か
論理的なコミュニケーションの特徴
- 「言葉で伝える」ことに価値がある
- 話が飛躍する事がない
- 直観的で判り易い表現
- 単純でシンプル、明示的な表現
- 質疑応答では直接的に回答
論理的なコミュニケーションの効果
- 報連相を楽に的確に行える
- 会議等の発表が判り易くなる
- 意見や視点の違いを分析し、正しく対応できる
- 上司や苦手な相手とも旨くやれる
- 信頼を得る魅力的で明快な情報を提供できる
- 相手のニーズをうまく聞き出せる
- 相手に応じた指導が出来る
- プラス発想の指導力が発揮できる
- 相手からの信頼が増す
上司が部下に望むコミュニケーション
- 自分の意見を明確にする
- 報告が論理的で判り易く迅速
- 難しい仕事に挑戦する
- 上司の意図、望むことを理解する
- 周囲への配慮が出来る
部下から見て望ましい上司の行動
- 指示の出し方が、一括性を持ち、論理的かつ明確
- 話し方や聞き方が、権威をかさに着ることなく冷静
- 情報の共有をする
- やる気を引き出す
- 部下の特性を把握している
◆論理的に話すためのコツ
話が分かりやすい人の特徴
- 話の目的やテーマが決まっている
- 無駄な情報を捨てて話をしている
- 話のストーリーが予め決まっている
- 話の裏づけデータを揃えている
- 相手の判る単語で話す
- ゆったりと自信を持った話し方
三角ロジックの薦め
「主張」「裏づけ」「根拠」を三角形の各頂点に配して、お互いに関連つけながらな話す方法。
論理的コミュニケーションの要領
- 聞き手の立場に立ち
- ↓
- 客観的な事実やデータに基づいて根拠が明確であり
- ↓
- 筋の通った展開で
- ↓
- 結論がはっきりしている
コミュニケーションスタイル
- コントローラ・タイプ (自分の思ったとおりに物事を進めることを好む)
- プロモータ・タイプ (注目されることが好き)
- サポーター・タイプ (人間関係を大切にする)
- アナライザー・タイプ (分析する事を好む)
2.職場でのコミュニケーション上達の基本
◆相手の立場になって考えるとは
相手の立場になって考えること = 相手の言うことに耳を傾ける
◆傾聴はコミュニケーション能力の大切な要素
相手の言うことを積極的に耳を傾けることを特に「傾聴」と言います。
- 耳で聞くな、態度で聴け
- 聴くことに集中しよう
- 話は最後まで聴くこと
- 相手の話をスムーズにさせよう
- 判らないところは尋ねよう
- 必要に応じて繰り返しを行うこと
◆アサーティブ型の話し方とは
時と場合によっては、相手に意見の中身によっては、ハッキリと「No」と言わなければならないケースがある。一方的に自分の主張を押し通すわけではなく、自分の主張を旨く伝える話法である。単なる服従でもなく、かと言って攻撃的でもないコミュニケーション手法が「アサーティブ型」の話し方と言う。
- 事実・状況を話す
- 説明・意見を述べる
- 自分の考えを提案する
- 提案の結果を示唆する
3.報告・連絡・相談の基本
◆上下、左右のコミュニケーションと「報」「連」「相」
上司の欲しがる現場情報を適宜・的確にあげること、それは部下として欠かしてはならない最大責務である。
◆「報」「連」「相」の果たす役割
- 仕事の締めくくりで且つ、次のステップへの始まり
- 業務の流れを円滑にする潤滑剤
- 作業能力向上の機会
- 相手の立場と考え方を知り、チームワークを向上させる
◆望ましい「報」「連」「相」とは
望ましい報告とは
- タイムリーな報告 (中間報告、変更報告、トラブル報告、結果報告、情報報告)
- 結論を先に、経緯や言い訳は後回しに報告
- 報告相手の都合も考えて報告しよう
- 事実情報と憶測情報を区別して報告すること
- 報告事項を自分で勝手に取捨選択せずこまめに
- 報告に加えて自分の意見や提案も延べられると良い
望ましい連絡とは
- 連絡は連絡先がキチンと判ってなんぼ
- スピーディでタイムリーな連絡が喜ばれる
- 大切な連絡には手抜きをしない
- 重要な連絡の後は確認を行う気配り
望ましい相談とは
- 相談を持ちかける際のタイミング良い心配り
- 相談に際しての事前準備が為されていると良い
- 自分独りで悩みを抱え込まない
- 答えを簡単に示さなくても再検討に挑戦する
C++ クラス -オーバーライド- [開発環境]
参考サイト
◆オーバーライド
継承によって作られたサブクラスは、スーパークラスのメンバを引き継ぎますが、オーバーライドを使うと、 引き継いだメンバ関数の中身を書き換えることができます。つまり、スーパークラス側とサブクラス側とで、異なる 動作をさせることができるようになるということです。
コーディング例
// pen.h
// CColorPenクラスで使う線の色
#define BLACK (0)
#define RED (1)
#define BLUE (2)
#define GREEN (3)
// 黒いペンのクラス
class CPen
{
public:
// 線を描く
virtual void DrawLine(int sx, int sy, int ex, int ey);
};
// 色ペンのクラス
class CColorPen : public CPen
{
public:
// 線を描く
void DrawLine(int sx, int sy, int ex, int ey);
// 線の色を設定する
void SetColor(int color);
private:
// 線の色
int m_color;
};// pen.cpp
#include "pen.h"
// 黒い線を描く
void CPen::DrawLine(int sx, int sy, int ex, int ey)
{
// 黒い線を描く
}
// 現在設定されている色で線を描く
void CColorPen::DrawLine(int sx, int sy, int ex, int ey)
{
// m_colorを参照して、その色で線を描く
}
// 線の色を設定する
void CColorPen::SetColor(int color)
{
m_color = color;
}
オーバーライドを行うためには、スーパークラス側のメンバ関数に「virtual」 というキーワードを付けます。virtualを付けて宣言されたメンバ関数のことを、仮想関数 と呼びます。
そして、メンバ関数の定義ですが、スーパークラス側もサブクラス側も、両方とも定義を記述します。そのため、 両者の内容を変えれば、動作を変更できるわけです。CPenクラス側のDrawLineメンバ関数を呼び出すと、黒い線が描かれ、 CColorPenクラス側のDrawLineメンバ関数を呼び出すと、現在の色で線が描かれるようにします。
main関数の方は、次のようにしたとします。
// main.cpp
#include "pen.h"
int main()
{
CPen pen;
CColorPen color_pen;
pen.DrawLine( 10, 10, 100, 100 ); // 黒い線を描く
color_pen.SetColor( RED ); // 赤色を設定
color_pen.DrawLine( 20, 20, 200, 200 ); // 赤い線を描く
return 0;
}
ウーマンズ・チョイス [健康]
女性向けサプリメントセット。こんな方にお勧めとのこと。
- 最近、年かなと思う
- 手足が冷える
- 肌荒れが気になる
- 生理前イライラしたり頭痛が起きる
- 骨粗しょう症を予防したい
カルシウム
男性より気を使わなければならないのは、カルシウムをたっぷり摂ること。骨粗しょう症になるのはほとんど女性なんです。出産などでカルシウムを大量に消費する機会の多い女性は、年を経るごとに骨から不足分のカルシウムが奪われやすく、スカスカの骨になりやすいのです。そのため、カルシウムをたっぷり目の配合にしました。
ビタミンB・C
冷え性、肌荒れ、肩こりの悩みのない女性はいないでしょう。ビタミンBもいいけど、Cも美白にいいらしい・・・なんて、ばらばらに考えるのは面倒。ウーマンズチョイスは女性特有の悩みを一挙に引き受けます。
成分表
原材料表
この手の製品は、目的にあったビタミンをバランス良く取れるので便利です。