04 | 2025/05 | 06 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
近年,オブジェクト指向プログラミングが,もてはやされています.
しかし,本当に必要なのでしょうか?
C言語など手続き型言語で十分なように思ってしまいます。
オブジェクト指向が良いとされる理由として
「開発力が上がる」というのがあります.これは一度作ったモジュールを
再利用することができるからだと思われます.
(でもC言語でも関数を使いまわせるような気がします 疑問)
OOPが本当に必要なのかを理解するため,
その利点と,どのような場面で有効なのかを考えてみたいと
思います。
オブジェクト指向のキーワード
・カプセル化(情報隠蔽)
・抽象化(クラスとオブジェクト)
・階層的構造化(継承と集約)
・メッセージ
・ポリモーフィズム
構造の表記方法
UMLなど
具体的な言語
Javaなど
「カプセル化」
データとそれを処理する手続き これらをまとめてしまうのがカプセル化の
役割の一つ。
データは属性とも呼ばれる,オブジェクトの名前,所属など性質を表現する。
処理する手続きはメソッドとも呼ばれる。メソッドはデータへのアクセスや操作を
行なう。(例:所属の変更→名刺のアドレスを書き換える など)
カプセル化の役割。
オブジェクトのデータを直接外部からアクセスさせないようにします。
データを操作するときは,アクセスできるメソッドを経由してのみ授受できるものとします。
これにより,データの構造や内部の処理を外部から隠蔽します。(内部構造を詳しく知らなくても
モジュールを扱える!)
このため,オブジェクトはデータ構造の定義と,それらにアクセスするためのメソッドによって
構成されています。
クラスに関して参考サイト
http://www.aerith.net/design/class-j.html
一つの概念に対応させる処理のことをパターン認識という.
認識対象から何らかの特徴量を複数抽出する.
それらの特徴は,特徴ベクトルとして表現される.
特徴ベクトルによって張られる空間を特徴空間という.
各パターンは特徴空間上の一点として表される.
特徴ベクトルの選び方が適切ならば,
クラスタリングと呼ばれている.
クラスタリングには,階層的クラスタリングと,そうでないものがあり,
前者の代表はウォード法.
後者の代表はk-means法である.
第一引数:コピー先のアドレス
第二引数:コピー元のアドレス
第三引数:コピーするデータの大きさをバイト単位で指定
【戻り値】
第一引数がそのまま戻り値となる.
【どこで役に立つ?】
どんなタイプのデータでも,まるまるコピーを作ることが可能である.
例えば構造体で,実データやポインタが一緒になってデータとして並んでいても,まるごとコピーを作成することが可能である.
【補足】
仲間 strcpy:文字列限定 \0が登場するまでコピーする