酒居敬一(sakai.keiichi@kochi-tech.ac.jp) アルゴリズムとデータ構造1 2007年6月12日 酒居敬一(sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/ALG/2007/index.html.

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
Applet 岡部 祐典 鈴木 敬幸.
~手続き指向からオブジェクト指向へ(Ⅰ)~
プログラミング基礎I(再) 山元進.
Javaのための暗黙的に型定義される構造体
プログラミングパラダイム さまざまな計算のモデルにもとづく、 プログラミングの方法論 手続き型 関数型 オブジェクト指向 代数 幾何.
アルゴリズムとプログラミング (Algorithms and Programming)
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
アルゴリズムとデータ構造 2011年6月13日
アルゴリズムとプログラミング (Algorithms and Programming)
社会人学習講座 「Javaプログラミング概論」
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
C#とC++とオブジェクト指向 上甲 健史.
オブジェクト指向入門.
アルゴリズムとデータ構造 2011年6月20日
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
プログラミング言語入門 手続き型言語としてのJava
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向プログラムにおける エイリアス解析について
第11週:super/subクラス、継承性、メソッド再定義
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
C#言語ソースプログラムの原型 C言語 C#言語 Hello World! Hello Students! オマジナイ! 適当なクラス名
Java8について 2014/03/07.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2010年6月21日
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト・プログラミング 第8回.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
アルゴリズムとデータ構造 2012年6月11日
アルゴリズムとプログラミング (Algorithms and Programming)
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2012年6月21日
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

酒居敬一(sakai.keiichi@kochi-tech.ac.jp) アルゴリズムとデータ構造1 2007年6月12日 酒居敬一(sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/ALG/2007/index.html

アルゴリズムとデータ構造基礎 オブジェクト指向の概念とJava言語 計算量の概念とO記法 オブジェクト指向 = Object Oriented Java言語のOO的なところの概説 計算量の概念とO記法 空間計算量と時間計算量 O記法

オブジェクト指向(OO)の概念 オブジェクトを基本にとらえようとする考え オブジェクト間はメッセージパッシング 従来の考えとちょっと違う オブジェクトの中身をいぢるのはオブジェクト自身 メソッドが内蔵されている 従来の考えとちょっと違う メソッドがオブジェクトに内蔵されてるとか クラスが継承できるとか いろいろありますね…

オブジェクトとクラス オブジェクト=もの クラスとは? メソッドとは? 実体のあるものすべてオブジェクト 設計図のようなもの 型のようなものだけど型ではない メソッドを含むこともできる メソッドとは? オブジェクトへの操作を定義したもの オブジェクトへメッセージが送られたとき使われる

この講義の受講生だけでも90人いたりするわけで… 簡単な例 クラス: 人間 この講義の受講生だけでも90人いたりするわけで… 財布+お金 お金の使途  教科書  学習方法 Aさん 財布+お金 お金の使途  教科書  学習方法 Bさん 財布+お金 お金の使途  教科書  学習方法 Zzさん ・・・

OOの概念とJava言語 オブジェクトはクラスのインスタンス メッセージを渡すこと=関数を呼ぶこと 継承、インターフェース 例えば、newすればインスタンスは生成できる メッセージを渡すこと=関数を呼ぶこと 渡したいメッセージは引数 受け取りたいメッセージは戻り値 継承、インターフェース

継承(inheritance) 基底クラスの構成要素をそのままに、拡張する仕組み。 Javaではextendsにより継承 継承の結果できたクラス=派生クラス class baseClass { void methodBase(){ // 何らかの処理1 } class inheritedClass extends baseClass { void methodInherited(){ // 何らかの処理2

静的束縛と動的束縛 オーバーライド 隠蔽 動的束縛 基底クラスで定義されるメソッドを派生クラスで再定義すること 基底クラスのstaticメソッドを派生クラスのstaticメソッドでオーバーライドすること 隠蔽は静的束縛が適用される 動的束縛 クラス構成要素を呼び出す際に決定 オブジェクト変数に代入されたオブジェクトにより呼ばれる構成要素が決まる

継承とオーバーライド class baseClass { // 基底クラス void methodA(int i){ // 派生クラスによりオーバーライドされる int x = i * 1000; System.out.println(x); } void methodB(int i){ // 派生クラスに継承される int x = i + 1000; class inheritedClass extends baseClass { // 派生クラス void methodA(int i){ // オーバーライドします int x = i * 10; System.out.println(x); } public static void main(String[ ] args) { inheritedClass objectInherited = new inheritedClass( ); objectInherited.methodA(10); // 100 を表示 objectInherited.methodB(10); // 1010 を表示

静的束縛 class baseClass { // 基底クラス static void methodA(int i){ // クラスメソッド int x = i * 1000; // プログラムとともに存在 System.out.println(x); } static void methodB(int i){ // クラスメソッド int x = i + 1000; class inheritedClass extends baseClass { // 派生クラス int x = i * 10; // プログラムとともに存在 System.out.println(x); } public static void main(String[ ] args) { baseClass certainObject = new inheritedClass( ); certainObject.methodA(10); // 10000を表示 certainObject.methodB(10); // 1010を表示

動的束縛 class baseClass { // 基底クラス void methodA(int i){ // インスタンスメソッド int x = i * 1000; //   newしたときに生成 System.out.println(x); } void methodB(int i){ // インスタンスメソッド int x = i + 1000; class inheritedClass extends baseClass { // 派生クラス int x = i * 10; //   newしたときに生成 System.out.println(x); } public static void main(String[ ] args) { baseClass certainObject = new inheritedClass( ); certainObject.methodA(10); // 100を表示 certainObject.methodB(10); // 1010を表示

計算量の概念(7ページ 1.2節) アルゴリズムの性能を示す指標 大きな問題が少ない計算量で解ければ優秀 時間計算量 空間計算量 計算量の概念(7ページ 1.2節) アルゴリズムの性能を示す指標 時間計算量 (文字通り)計算に要する時間 空間計算量 どれくらいの作業領域を必要とするかを表す 大きな問題が少ない計算量で解ければ優秀 漸近的に表現したものがO記法 計算量を定式化したとき、計算量に最も大きな影響を及ぼす項をとりだしたもの。

O記法 漸近的な振る舞いを表す 項の形で大きく2つに分けられる(問題:n) 定数項は無視 係数は1 一般には最も影響力の強い項のみで表す 指数関数   kn

O(n)

O(n2)

O(en)

O(n log n)

演習課題 アルゴリズムとデータ構造の概念を述べよ。 オブジェクト指向の概念を述べよ。 アルゴリズム+データ構造=プログラム は不可 オブジェクト指向の概念を述べよ。 O(n), O(n2), O(2n), O(n log n)を性能の良い順に並べよ。 計算量が指数関数となるときの問題点を挙げよ