SlideShare a Scribd company logo
1 of 19
Java とは プログラミング言語 Java は、 1990 年代前半にサン・マイクロシステムズでジェームズ・ゴスリンなどの人々に よって開発された。  一口に Java といっても、その実行環境や用途によっていくつかに分類される。 1. Java サーブレット :     サーバとクライアント PC 間でデータ通信しながら動く。つまりネットワークを介して動く。     世の中の多くのシステムはこの形式。 2. Java アプリケーション :      通称 Java アプリ。 PC や携帯電話内で単独で動く Java プログラム。ネットワークは必須ではない。     携帯電話等でのゲームは Java アプリで作成されてることが多い。 3. Java アプレット :       PC 上や携帯電話等の端末内で単独、かつ、 WEB ブラウザ上で動く Java プログラム。  WEB サイトや WEB     ページを作る際に良く使われる。 4. JavaScript  :       Java 言語とは無関係。 HTML 内に記述するスクリプト言語。
Java の特徴 (2)Java の実行環境は、 Java 実行環境  (Java Runtime Environment; JRE)  と呼ばれる。基本的な開発環境は、 Java 開発キット  (Java Development Kit; JDK)  と呼ばれる。 (3)Java はクラスベースのオブジェクト指向プログラミング言語である。 (4)Java のプログラムは複数のクラスから構成され、プログラムの実行は、各クラスが実体化したオブジェクト群が相互に メッセージをやりとりしながら行われる。 (5)Java では、継承については実装の単一継承を採用している。ただし 1 つのクラス(オブジェクト)は複数のインタフェースを実装できる。 (6)Java では簡潔なメモリモデルを採用しており、プログラマがメモリ  ( 主記憶装置 )  を管理する負担を軽減する。あらゆるオブジェクトはメモリ内のヒープという領域に割り当てられる。メモリ管理は、 Java 仮想マシンに統合されたガベージコレクションの機能によって行われる。 従来のオブジェクト指向プログラミング言語である  C++  では、ヒープ領域に生成したオブジェクトについて、もはや必要が無くなった時に破棄する指示を、プログラマが自分で責任をもって行わなければならなかった。これは、 C++  プログラマにとっては負担が大きく複雑で間違えやすい作業であり、ソフトウェアの安全性・開発効率・保守性を損なう要因だった。 Java ではガベージコレクションの機能があるため、このようなことは無く、プログラマの負担は大きく軽減される。 (7)Java の文法は、 C および C++ から多くを引き継いでいる。 また、 C/C++ には存在する低水準領域を操作できるポインタという機構は排除されていると言われているが、 Java の開発者も言っているように、 C/C++ のポインタモデルとは異なるが Java にもポインタモデルが存在する。たとえば、クラスインスタンスと配列はポインタを使用している。 (8)Java ではプラットフォーム非依存を目標の一つとし、プラットフォームに依存しないアプリケーションソフトウェアの開発と配備を行うことができる。従来のプログラミング言語の多くはプラットフォーム  (CPU)  に依存したネイティブなコードにコンパイルすることを前提として設計されていたが、 Java はこうした言語と異なり、中間言語(バイトコード)にコンパイルされ、 Java 仮想マシンで実行されるよう設計された。
プログラミング言語の歴史   「オブジェクト指向」という言葉を使い始めたのはアラン・ケイだと言われており、アラン・ケイ達が開発した オブジェクト指向環境 Smalltalk では、表現、実現するすべてのものを、『オブジェクト』とそれらの間で交わされる 『メッセージ送信』によって表わした。   後に、 C++ の設計者として知られるビャーネ・ストロヴストルップが発表した考え(カプセル化、継承、多相性) が広く普及してきている。   オブジェクト指向については、両者が渾然した抽象的な概念として語られることが多く、決まった定義はない。
オブジェクト指向プログラミング言語(1) ■ Lisp( リスプ。 1958 年 )    MIT にいたジョン・マッカーシー( 1927- )によって開発。 LISP は FORTRAN に次ぐ 2 番目に古い高級言語であり、 現在でも広く使われている。    Lisp はこの時点ではオブジェクト指向言語ではないが、その表現力と柔軟性によって、人工知能のコミュニティで 人気を持つようになり、多くの言語に影響を与えている。ジョン・マッカーシーは、マービン・ミンスキーとともに人工 知能の父と呼ばれている。現在、スタンフォード大学の教授。 ■ LOGO (ロゴ。 1960 年代後半)   シーモア・パパート( 1928- )によって開発。児童向け教育用として作成されたプログラミング言語。豊富なグラフィック 関連のコマンドが特徴で、画面に出てくるタートル(亀)に簡単な動きの命令を与えて、その軌跡を図形として描いたり、 さらに色を塗ったりして楽しむ事が簡単に出来る。 シーモア・パパートは南アフリカ出身のアメリカの数学者、計算機科学者、発達心理学者。アメリカに移住してマサチュ ーセッツ工科大学( MIT )で Media Lab の創設に関わっている。 ■ Simula( シミュラ、 1960 年代中期)   ノルウェーのクリステン・ニガード (1926 年 -2002 年 ) とオルヨハン・ダール (1931 年 -2002) が設計 / 実装した。主に 北欧圏で使われて、広く普及することはなかったが、その後、後続言語に与えた影響は大変大きい。 Simula はクラスや継承、動的束縛の機能をもち、オブジェクト指向プログラミングの基本概念はすべてここで発案 されている。 ■ Smalltalk: (スモルトーク。 1970 年代)    XEROX のパロアルト研究所  (PARC)  で 1970 年代に約 10 年かけ整備されました。主な開発者は  Alan Kay( アラン・ケイ ) 、 Dan Ingalls 、 Adele Goldberg, 、 Ted Kaehler 、 Scott Wallace 等。   豊富で整備されたクラスライブラリは、特にオブジェクト指向プログラミングの手本とされ、デザインパターンの宝庫と 称されるまで洗練されたものになっており、後世の多くのオブジェクト指向プログラミング言語に直接的、間接的に 多大な影響を与えている。   「オブジェクト指向」という言葉は、 1970 年代にアラン・ケイが Smalltalk の概念として使い出したので、 Smalltalk が世界 最初のオブジェクト指向言語となるが、実質的には Simula にその原型が現れています。 Smalltalk は、 Simula の他、 Lisp 、 LOGO の影響を受けている。
その他のオブジェクト指向プログラミング言語(2) ■ Flavors( フレーバーズ。 1979 年 ) MIT の D. ワインレブ、 D. ムーンらが設計した Lisp マシン上のシステム記述言語であり、 Lisp に基づいた最初の オブジェクト指向言語でもある。オブジェクト指向言語を指すだけでなく、ウインドウシステム、ネットワークも含めた完全 なオブジェクト指向で作られたソフトウェアシステムの総称を指す。 その特徴は flavor (フレーバー)と呼ばれるプログラムモジュールにある。 flavor は Simula や Smalltalk でいう『クラス』に相当する。  これを多重継承させる機構やメソッドを組み合わせて使う メソッド結合などの機構によって、様々な事象を定義できるようになっている。 flavor とは風味のことであり、いろんな風味のアイスクリームを混ぜ合わせる、というところから命名された。   MIT で作られ、後に Symbolics 社で New flavors となり進化していく。 ■ CLOS( クロス。 1990 年頃 )    Common Lisp Object System. の略。 Common Lisp にオブジェクト指向プログラミングのための追加した機能で、 Flavors と  LOOPS 等の影響を強く受けている。 ■ C++ (シープラスプラス。 1983 年)     AT&T ベル研究所で B. ストロウストゥルプによって開発されたオブジェクト指向言語。その原形は、 1980 年に発表 された『クラスを持った C 』であり、その名のとおり C 言語の機能拡張版と言える仕様となっている。     B. ストロウストゥルプは「 The Programming Language C++ 」の序章に、この言語仕様の目的を     ①よりよい C 。      ②オブジェクト指向プログラミングが可能であること。     ③抽象クラスを実現する。 と記している。    それまでにオブジェクトとメッセージで表現していたオブジェクト指向のモデルとはやや異なっており、カプセル化、 継承、多相性という概念が適用されている。     C++ は C のコンパイラでもあるので、普通に C として利用することも可能。このため、これがプログラマの自由度を 高くしており、自由度が高いということはプログラマにとってはかえって難しく感じさせる要因になっている。
(メモ:ビャーネ・ストロヴストルップ) ○ ビャーネ・ストロヴストルップ( Bjarne Stroustrup, 1950 年 -  )   デンマーク生まれのコンピュータサイエンテスト。    1975 年、オーフス大学で計算機科学と数学の修士号を取得。   卒業後イギリスに渡り、 1979 年にケンブリッジ大学で計算機科学の博士号を取得。その後家族とともにアメリカ   合衆国ニュージャージー州に渡り、 AT&T ベル研究所に大規模プログラミング研究部部長として勤務。    1983 年に  C 言語を拡張し、オブジェクト指向プログラミングを可能にした  C++  を開発した。    2002 年に  AT&T  ベル研究所を退所し、現在はテキサス州テキサス A&M 大学の計算機科学教授を務めている。    2004 年、全米技術アカデミーの会員に選出される。   主な著作:      『プログラミング言語 C++ 第 3 版』 翻訳 : 長尾高弘       『 C++ の設計と進化』  (The Design and Evolution of C++)  翻訳 :  岩谷宏  ○ マービン・ミンスキー( Marvin Minsky, 1927 年 -  )   アメリカ合衆国のコンピュータ科学者であり、認知科学者。 MIT 人工知能研究所の設立者の 1 人。   初期の人工知能研究を行い、 AI や哲学に関する著書でも知られ、「人工知能の父」と呼ばれる。   現在ダートマス会議として知られる、“ The Dartmouth Summer Research Project on Artificial Intelligence (1956)”   の発起人の一人。ニューヨーク市生まれ。 1950 年にハーバード大学を卒業後、プリンストン大学で数学の博士号    (1954 年 ) 。現在は MIT の電子工学および情報工学の教授。    主な著書      『パーセプトロン』  (with Papert S. Perceptron, Cambridge, MA: MIT Press., 1969 年 )       『心の社会』  (The Society of Mind, Simon and Schuster, 1987 年 )        The Emotion Machine [1], Simon and Schuster, 2006 年
4.オブジェクト指向(1) (1)「オブジェクト指向」の決まった定義は無い    オブジェクト指向というのは、ものごとを捉え、表現する考え方です。その定義も特に決まったものはありません。    例えば、「継承」や「ポリフォーリズム」がないものは、オブジェクト指向ではない、ということはありません。 (2)オブジェクト指向での「オブジェクト」とは    人間が現実世界を認識する際に、物の存在、物の自律性、物の相互関係と相互干渉で捉えているといえます。    それと同じ方法で、システム作りのモデル(設計)に適用するのは良い考えで、    それまでやり方、処理の流れを整理して、その手順を、プログラムとして表現することに比べると、     自然なアプローチです。 ふるまい ふるまい ふるまい ふるまい Object Object Object Object
5.オブジェクト指向(2) (3) 「オブジェクト指向」と「オブジェクト指向プログラミング」     この2つの間には非常に大きなギャップがあります。     オブジェクト指向プログラミングとは、オブジェクト指向を実現するためのプログラミングの方法です。     オブジェクト指向という概念を、コンピュータで実現するのはいろんな課題があります。これはプログラミング     言語の限界でもあり、「フォン・ノイマン型」と言われる現在のコンピュータの原理仕組の限界ともいえます。     「 The C++ Programming Language 」の著者ビャーネ・ストロヴストルップ( Bjarne Stroustrup, 1950-  )は、     この書の中で、オブジェクト指向の実現に関して、 C++ の言語仕様上どうしても実際の複雑になる、出来ない     点がある、とあちこちで嘆きのコメントが散らばっています。     もっと画期的なコンピュータが登場しないと、考えるコンピュータ、ロボット等、真のオブジェクト指向は実現     しないのかもしれません。 (4)オブジェクト指向プログラミングとオブジェクト指向で無いプログラミング    どちらがいいか、という話ではまったくありません。    オブジェクト指向の利点として、拡張性、再利用性、情報隠蔽などが言われますが、これは「オブジェクト指向」    でなくても実現可能です。 C 言語でも Fortran 言語でも可能です。プログラミングするにあたって、「物」を中心に    考えるか、「処理』を中心に考えるか、というのが大きな違いです。
6. 「もの」を認識する(1) これは何に見えますか?
6.「もの」を認識する(2) E F A A これは、「 A 」の上部先端部分を消したものです。 何の予備知識が無いと、「 A] だとは思わない人も居るでしょうが、 事前にアルファベットだと知らされていれば、ほとんどの人は 「 A 」だというでしょう。 その場合、欠落してる部分を、無意識のうちに補って「 A 」だと 認識しています。 「 E 」と「 F 」は、図形的には以外は良く似ています。 「 E 」と「 F 」は、下部の横棒のある無しが大きな相違です。 その横棒ある無しの違いを認識して判断します。
6.「もの」を認識する(3) この図を見たときに、「アルファベットの一部がボックスに隠れている」との認識があると、判定がしやすくなります。 線だけの図形にしたのが一番左側の図で、「アルファベットの一部がそのボックスに隠れている」と認識するには あいまいです。 このように、2つのもの(アルファベットとボックス)と認識することと、単に線の図形とでは、認識度が大きく異なる。 下の図を見てください。 これは何を表している? B E
7.フレーム理論(マービン・ミンスキー)(1) マービン・ミンスキー(人工知能研究の第一人者)は、その著「心の社会」で、人間がものごとを識別する 単位(フレーム)、さらにそれを認識する知能、さらには心の動きを、フレーム理論として表現した。 下記の図は、直線だけで表現した図形です。 これを人間どうとらえるか、、また、その方法をロボットが習得することができるか、ということを考察している。
8.フレーム理論(マービン・ミンスキー)(2) 壁 床 テーブル 壁 ホワイトボード? 概ね、下記のような「物」から成り立ってると思う人が多いと思います。ここには遠近感があり、「物」の影に隠れて いるものすら、無意識のなかで補っています。 単に直線だけで成り立った図形だと見ると、想像力を含まらせるといろんなことが想定されます。
9.オブジェクト(オブジェクトが相互に作用して物事が起きる。メッセージ交換) 吉田さん 内田さん オブジェクト:物の存在、物の自律性、物の相互関係と相互干渉で捉える。 吉田さん 内田さん ノートを貸して いいよ。はい。どうぞ。 ありがとう! ノート 存在 相互作用 ノート
10.メッセージ (Message) とふるまい (Behavior) 社長 部長 部長 課長 「売上倍増!」 「売上倍増!」 「売上倍増!」 同じメッセージでも、受け手によって振る舞いが異なる。(重要)=>ポリモーフィズム(多様性)と呼ぶ 部下 自分の部下にまかそう もっと頑張る ! どうせ出来ないので、特に何もしない・・・ ! Message Message Message Behavior 「売上 50% 増!」 Message 少しは頑張るか・・・ Object/Class) Object/Class) Object/Class) Object/Class)
11. Hello Worl d Hello World プログラムを作成して動かしてみる。 1.編集ソフト pcpad を起動して、上のファイルを作成する。 2.ファイル名は HelloWorld.java とする。(しないといけない。クラス名とファイル名が同じにする) 3.保存する。 4.コンパイルする。(エラーが出たらファイルを修正する。) 5.実行する。 public class HelloWorld { public static void main(String[ ] args) { System.out.println("Hello Java World");  } } クラス名 メインメソッド名
11. Hello World (2) - コンパイルと実行の仕方 - 今回の実習では Jcpad という開発ツールを使います。 一般には eclisp という開発ツールを使うことが多い。 ① 保存 ② コンパイル 実行 ③ コンパイル結果が表示される。 HelloWorld.java HelloWorld.class コンパイル
11.再び、 Hello   World(1) 先のプログラムは、オブジェクト指向の「オ」の字も無いプログラムなので、オブジェクト指向っぽく 書き直して みました。 NewHello クラスと Student クラスの2つ作成し、 NewHello クラスから Student クラスに Hi というメッセージを送ると、 Student クラスが、コメントを返す、と言うプログラムです。 public class NewHello{ public static void main( String [] args ) { Student suzuki = new Student(); Student yoshida = new Student(); suzuki.Hi(1); yoshida.Hi(2); } } class Student {      String comment1 = " ハロー!!! ";      String comment2 = " こんにちわ! ";        public void Hi(int i){ if(i==1){      System.out.println(comment1); }  else if(i==2){      System.out.println(comment2); }      } } NewHello クラス Student クラス オブジェクト suzuki オブジェクト yoshida Hi new new
11.再び、 Hello   World(2) - コンストラクタ - JAVA で重要な基本要素であるコンストラクタを追加してみます。 ( 紙面の都合で yoshida さんは省略します。) public class NewHello2{ public static void main( String [] args ) {   Student suzuki = new Student(); suzuki.Hi(1); } } class Student {   String comment1;   String comment2;     Student(){ System.out.println("Student が生成されました "); comment1 = " ハロー !!!"; comment2 = " こんにちは! ";   }   public void Hi(int i){   if(i==1){ System.out.println(comment1); }  else if(i==2){ System.out.println(comment2);   }   } } コンストラクタ  ・オブジェクトが生成された時に行う処理を記述する。  ・コンストラクタ名はクラス名と同じでなくてはならない  ・ public も戻り値もつけない。 この時 (new )にコンストラクタ が実行される。 コンストラクタを利用して 文字列を代入する。

More Related Content

Similar to 第1回java実習(helloworld)2011

Linuxとオープンソースの世界
Linuxとオープンソースの世界Linuxとオープンソースの世界
Linuxとオープンソースの世界Hiroe Orz
 
Watanabe civictechforum
Watanabe civictechforumWatanabe civictechforum
Watanabe civictechforumsiramatu-lab
 
「解説資料」ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
「解説資料」ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation 「解説資料」ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
「解説資料」ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation Takumi Ohkuma
 
【DL輪読会】ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
【DL輪読会】ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation【DL輪読会】ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
【DL輪読会】ViTPose: Simple Vision Transformer Baselines for Human Pose EstimationDeep Learning JP
 
2016プロシンスポンサー 加筆版
2016プロシンスポンサー 加筆版2016プロシンスポンサー 加筆版
2016プロシンスポンサー 加筆版Hirokazu Nishio
 
[DL輪読会]画像を使ったSim2Realの現況
[DL輪読会]画像を使ったSim2Realの現況[DL輪読会]画像を使ったSim2Realの現況
[DL輪読会]画像を使ったSim2Realの現況Deep Learning JP
 
COBOL技術者のためのJava勉強会
COBOL技術者のためのJava勉強会COBOL技術者のためのJava勉強会
COBOL技術者のためのJava勉強会naka hide
 
いまさらアジャイル巡業 In Tokyo アジャイルモデリング
いまさらアジャイル巡業 In Tokyo アジャイルモデリングいまさらアジャイル巡業 In Tokyo アジャイルモデリング
いまさらアジャイル巡業 In Tokyo アジャイルモデリングYuki Tagami
 
Semat - a Japanese introduction
Semat - a Japanese introductionSemat - a Japanese introduction
Semat - a Japanese introductionKenji Hiranabe
 
Howtoよいデザイン
HowtoよいデザインHowtoよいデザイン
HowtoよいデザインHiroki Yagita
 
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptxhkharu0803
 
Osc2012 appinventor のその後
Osc2012 appinventor のその後Osc2012 appinventor のその後
Osc2012 appinventor のその後Katsumi Honda
 
第11回 cocos2d-x勉強会 「cocos2dxでLWFを利用する」
第11回 cocos2d-x勉強会 「cocos2dxでLWFを利用する」第11回 cocos2d-x勉強会 「cocos2dxでLWFを利用する」
第11回 cocos2d-x勉強会 「cocos2dxでLWFを利用する」Naoki Yokota
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門Atsushi Tadokoro
 
Sapporo Open Seminar 1
Sapporo Open Seminar 1Sapporo Open Seminar 1
Sapporo Open Seminar 1Hiro Yoshioka
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門minazou67
 
iPhoneアプリ無料勉強会 vol3
iPhoneアプリ無料勉強会 vol3iPhoneアプリ無料勉強会 vol3
iPhoneアプリ無料勉強会 vol3codeal
 

Similar to 第1回java実習(helloworld)2011 (20)

Linuxとオープンソースの世界
Linuxとオープンソースの世界Linuxとオープンソースの世界
Linuxとオープンソースの世界
 
Watanabe civictechforum
Watanabe civictechforumWatanabe civictechforum
Watanabe civictechforum
 
「解説資料」ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
「解説資料」ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation 「解説資料」ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
「解説資料」ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
【DL輪読会】ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
【DL輪読会】ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation【DL輪読会】ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
【DL輪読会】ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
Kotlin handson
Kotlin handsonKotlin handson
Kotlin handson
 
2016プロシンスポンサー 加筆版
2016プロシンスポンサー 加筆版2016プロシンスポンサー 加筆版
2016プロシンスポンサー 加筆版
 
[DL輪読会]画像を使ったSim2Realの現況
[DL輪読会]画像を使ったSim2Realの現況[DL輪読会]画像を使ったSim2Realの現況
[DL輪読会]画像を使ったSim2Realの現況
 
COBOL技術者のためのJava勉強会
COBOL技術者のためのJava勉強会COBOL技術者のためのJava勉強会
COBOL技術者のためのJava勉強会
 
いまさらアジャイル巡業 In Tokyo アジャイルモデリング
いまさらアジャイル巡業 In Tokyo アジャイルモデリングいまさらアジャイル巡業 In Tokyo アジャイルモデリング
いまさらアジャイル巡業 In Tokyo アジャイルモデリング
 
Semat - a Japanese introduction
Semat - a Japanese introductionSemat - a Japanese introduction
Semat - a Japanese introduction
 
Howtoよいデザイン
HowtoよいデザインHowtoよいデザイン
Howtoよいデザイン
 
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx
 
Osc2012 appinventor のその後
Osc2012 appinventor のその後Osc2012 appinventor のその後
Osc2012 appinventor のその後
 
仕事のお話
仕事のお話仕事のお話
仕事のお話
 
第11回 cocos2d-x勉強会 「cocos2dxでLWFを利用する」
第11回 cocos2d-x勉強会 「cocos2dxでLWFを利用する」第11回 cocos2d-x勉強会 「cocos2dxでLWFを利用する」
第11回 cocos2d-x勉強会 「cocos2dxでLWFを利用する」
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
 
Sapporo Open Seminar 1
Sapporo Open Seminar 1Sapporo Open Seminar 1
Sapporo Open Seminar 1
 
Scrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pubScrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pub
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門
 
iPhoneアプリ無料勉強会 vol3
iPhoneアプリ無料勉強会 vol3iPhoneアプリ無料勉強会 vol3
iPhoneアプリ無料勉強会 vol3
 

Recently uploaded

My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」inspirehighstaff03
 
International Politics I - Lecture 1
International Politics I - Lecture 1International Politics I - Lecture 1
International Politics I - Lecture 1Toru Oga
 
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイントshu1108hina1020
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slidessusere0a682
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」inspirehighstaff03
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」inspirehighstaff03
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」inspirehighstaff03
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」inspirehighstaff03
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」inspirehighstaff03
 
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhrKARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhrRodolfFernandez1
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」inspirehighstaff03
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdfoganekyokoi
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」inspirehighstaff03
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfoganekyokoi
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」inspirehighstaff03
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」inspirehighstaff03
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」inspirehighstaff03
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfinspirehighstaff03
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfoganekyokoi
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」inspirehighstaff03
 

Recently uploaded (20)

My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
 
International Politics I - Lecture 1
International Politics I - Lecture 1International Politics I - Lecture 1
International Politics I - Lecture 1
 
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
 
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhrKARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdf
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」
 

第1回java実習(helloworld)2011

  • 1. Java とは プログラミング言語 Java は、 1990 年代前半にサン・マイクロシステムズでジェームズ・ゴスリンなどの人々に よって開発された。  一口に Java といっても、その実行環境や用途によっていくつかに分類される。 1. Java サーブレット :     サーバとクライアント PC 間でデータ通信しながら動く。つまりネットワークを介して動く。     世の中の多くのシステムはこの形式。 2. Java アプリケーション :     通称 Java アプリ。 PC や携帯電話内で単独で動く Java プログラム。ネットワークは必須ではない。     携帯電話等でのゲームは Java アプリで作成されてることが多い。 3. Java アプレット :      PC 上や携帯電話等の端末内で単独、かつ、 WEB ブラウザ上で動く Java プログラム。 WEB サイトや WEB     ページを作る際に良く使われる。 4. JavaScript :      Java 言語とは無関係。 HTML 内に記述するスクリプト言語。
  • 2. Java の特徴 (2)Java の実行環境は、 Java 実行環境 (Java Runtime Environment; JRE) と呼ばれる。基本的な開発環境は、 Java 開発キット (Java Development Kit; JDK) と呼ばれる。 (3)Java はクラスベースのオブジェクト指向プログラミング言語である。 (4)Java のプログラムは複数のクラスから構成され、プログラムの実行は、各クラスが実体化したオブジェクト群が相互に メッセージをやりとりしながら行われる。 (5)Java では、継承については実装の単一継承を採用している。ただし 1 つのクラス(オブジェクト)は複数のインタフェースを実装できる。 (6)Java では簡潔なメモリモデルを採用しており、プログラマがメモリ ( 主記憶装置 ) を管理する負担を軽減する。あらゆるオブジェクトはメモリ内のヒープという領域に割り当てられる。メモリ管理は、 Java 仮想マシンに統合されたガベージコレクションの機能によって行われる。 従来のオブジェクト指向プログラミング言語である C++ では、ヒープ領域に生成したオブジェクトについて、もはや必要が無くなった時に破棄する指示を、プログラマが自分で責任をもって行わなければならなかった。これは、 C++ プログラマにとっては負担が大きく複雑で間違えやすい作業であり、ソフトウェアの安全性・開発効率・保守性を損なう要因だった。 Java ではガベージコレクションの機能があるため、このようなことは無く、プログラマの負担は大きく軽減される。 (7)Java の文法は、 C および C++ から多くを引き継いでいる。 また、 C/C++ には存在する低水準領域を操作できるポインタという機構は排除されていると言われているが、 Java の開発者も言っているように、 C/C++ のポインタモデルとは異なるが Java にもポインタモデルが存在する。たとえば、クラスインスタンスと配列はポインタを使用している。 (8)Java ではプラットフォーム非依存を目標の一つとし、プラットフォームに依存しないアプリケーションソフトウェアの開発と配備を行うことができる。従来のプログラミング言語の多くはプラットフォーム (CPU) に依存したネイティブなコードにコンパイルすることを前提として設計されていたが、 Java はこうした言語と異なり、中間言語(バイトコード)にコンパイルされ、 Java 仮想マシンで実行されるよう設計された。
  • 3. プログラミング言語の歴史   「オブジェクト指向」という言葉を使い始めたのはアラン・ケイだと言われており、アラン・ケイ達が開発した オブジェクト指向環境 Smalltalk では、表現、実現するすべてのものを、『オブジェクト』とそれらの間で交わされる 『メッセージ送信』によって表わした。   後に、 C++ の設計者として知られるビャーネ・ストロヴストルップが発表した考え(カプセル化、継承、多相性) が広く普及してきている。   オブジェクト指向については、両者が渾然した抽象的な概念として語られることが多く、決まった定義はない。
  • 4. オブジェクト指向プログラミング言語(1) ■ Lisp( リスプ。 1958 年 )    MIT にいたジョン・マッカーシー( 1927- )によって開発。 LISP は FORTRAN に次ぐ 2 番目に古い高級言語であり、 現在でも広く使われている。    Lisp はこの時点ではオブジェクト指向言語ではないが、その表現力と柔軟性によって、人工知能のコミュニティで 人気を持つようになり、多くの言語に影響を与えている。ジョン・マッカーシーは、マービン・ミンスキーとともに人工 知能の父と呼ばれている。現在、スタンフォード大学の教授。 ■ LOGO (ロゴ。 1960 年代後半)   シーモア・パパート( 1928- )によって開発。児童向け教育用として作成されたプログラミング言語。豊富なグラフィック 関連のコマンドが特徴で、画面に出てくるタートル(亀)に簡単な動きの命令を与えて、その軌跡を図形として描いたり、 さらに色を塗ったりして楽しむ事が簡単に出来る。 シーモア・パパートは南アフリカ出身のアメリカの数学者、計算機科学者、発達心理学者。アメリカに移住してマサチュ ーセッツ工科大学( MIT )で Media Lab の創設に関わっている。 ■ Simula( シミュラ、 1960 年代中期)   ノルウェーのクリステン・ニガード (1926 年 -2002 年 ) とオルヨハン・ダール (1931 年 -2002) が設計 / 実装した。主に 北欧圏で使われて、広く普及することはなかったが、その後、後続言語に与えた影響は大変大きい。 Simula はクラスや継承、動的束縛の機能をもち、オブジェクト指向プログラミングの基本概念はすべてここで発案 されている。 ■ Smalltalk: (スモルトーク。 1970 年代)    XEROX のパロアルト研究所 (PARC) で 1970 年代に約 10 年かけ整備されました。主な開発者は Alan Kay( アラン・ケイ ) 、 Dan Ingalls 、 Adele Goldberg, 、 Ted Kaehler 、 Scott Wallace 等。   豊富で整備されたクラスライブラリは、特にオブジェクト指向プログラミングの手本とされ、デザインパターンの宝庫と 称されるまで洗練されたものになっており、後世の多くのオブジェクト指向プログラミング言語に直接的、間接的に 多大な影響を与えている。   「オブジェクト指向」という言葉は、 1970 年代にアラン・ケイが Smalltalk の概念として使い出したので、 Smalltalk が世界 最初のオブジェクト指向言語となるが、実質的には Simula にその原型が現れています。 Smalltalk は、 Simula の他、 Lisp 、 LOGO の影響を受けている。
  • 5. その他のオブジェクト指向プログラミング言語(2) ■ Flavors( フレーバーズ。 1979 年 ) MIT の D. ワインレブ、 D. ムーンらが設計した Lisp マシン上のシステム記述言語であり、 Lisp に基づいた最初の オブジェクト指向言語でもある。オブジェクト指向言語を指すだけでなく、ウインドウシステム、ネットワークも含めた完全 なオブジェクト指向で作られたソフトウェアシステムの総称を指す。 その特徴は flavor (フレーバー)と呼ばれるプログラムモジュールにある。 flavor は Simula や Smalltalk でいう『クラス』に相当する。  これを多重継承させる機構やメソッドを組み合わせて使う メソッド結合などの機構によって、様々な事象を定義できるようになっている。 flavor とは風味のことであり、いろんな風味のアイスクリームを混ぜ合わせる、というところから命名された。   MIT で作られ、後に Symbolics 社で New flavors となり進化していく。 ■ CLOS( クロス。 1990 年頃 )    Common Lisp Object System. の略。 Common Lisp にオブジェクト指向プログラミングのための追加した機能で、 Flavors と LOOPS 等の影響を強く受けている。 ■ C++ (シープラスプラス。 1983 年)    AT&T ベル研究所で B. ストロウストゥルプによって開発されたオブジェクト指向言語。その原形は、 1980 年に発表 された『クラスを持った C 』であり、その名のとおり C 言語の機能拡張版と言える仕様となっている。     B. ストロウストゥルプは「 The Programming Language C++ 」の序章に、この言語仕様の目的を     ①よりよい C 。      ②オブジェクト指向プログラミングが可能であること。     ③抽象クラスを実現する。 と記している。    それまでにオブジェクトとメッセージで表現していたオブジェクト指向のモデルとはやや異なっており、カプセル化、 継承、多相性という概念が適用されている。     C++ は C のコンパイラでもあるので、普通に C として利用することも可能。このため、これがプログラマの自由度を 高くしており、自由度が高いということはプログラマにとってはかえって難しく感じさせる要因になっている。
  • 6. (メモ:ビャーネ・ストロヴストルップ) ○ ビャーネ・ストロヴストルップ( Bjarne Stroustrup, 1950 年 - )   デンマーク生まれのコンピュータサイエンテスト。    1975 年、オーフス大学で計算機科学と数学の修士号を取得。   卒業後イギリスに渡り、 1979 年にケンブリッジ大学で計算機科学の博士号を取得。その後家族とともにアメリカ   合衆国ニュージャージー州に渡り、 AT&T ベル研究所に大規模プログラミング研究部部長として勤務。    1983 年に C 言語を拡張し、オブジェクト指向プログラミングを可能にした C++ を開発した。    2002 年に AT&T ベル研究所を退所し、現在はテキサス州テキサス A&M 大学の計算機科学教授を務めている。    2004 年、全米技術アカデミーの会員に選出される。   主な著作:      『プログラミング言語 C++ 第 3 版』 翻訳 : 長尾高弘      『 C++ の設計と進化』 (The Design and Evolution of C++) 翻訳 : 岩谷宏 ○ マービン・ミンスキー( Marvin Minsky, 1927 年 - )   アメリカ合衆国のコンピュータ科学者であり、認知科学者。 MIT 人工知能研究所の設立者の 1 人。   初期の人工知能研究を行い、 AI や哲学に関する著書でも知られ、「人工知能の父」と呼ばれる。   現在ダートマス会議として知られる、“ The Dartmouth Summer Research Project on Artificial Intelligence (1956)”   の発起人の一人。ニューヨーク市生まれ。 1950 年にハーバード大学を卒業後、プリンストン大学で数学の博士号    (1954 年 ) 。現在は MIT の電子工学および情報工学の教授。    主な著書      『パーセプトロン』 (with Papert S. Perceptron, Cambridge, MA: MIT Press., 1969 年 )      『心の社会』 (The Society of Mind, Simon and Schuster, 1987 年 )       The Emotion Machine [1], Simon and Schuster, 2006 年
  • 7. 4.オブジェクト指向(1) (1)「オブジェクト指向」の決まった定義は無い    オブジェクト指向というのは、ものごとを捉え、表現する考え方です。その定義も特に決まったものはありません。    例えば、「継承」や「ポリフォーリズム」がないものは、オブジェクト指向ではない、ということはありません。 (2)オブジェクト指向での「オブジェクト」とは    人間が現実世界を認識する際に、物の存在、物の自律性、物の相互関係と相互干渉で捉えているといえます。    それと同じ方法で、システム作りのモデル(設計)に適用するのは良い考えで、    それまでやり方、処理の流れを整理して、その手順を、プログラムとして表現することに比べると、     自然なアプローチです。 ふるまい ふるまい ふるまい ふるまい Object Object Object Object
  • 8. 5.オブジェクト指向(2) (3) 「オブジェクト指向」と「オブジェクト指向プログラミング」     この2つの間には非常に大きなギャップがあります。     オブジェクト指向プログラミングとは、オブジェクト指向を実現するためのプログラミングの方法です。     オブジェクト指向という概念を、コンピュータで実現するのはいろんな課題があります。これはプログラミング     言語の限界でもあり、「フォン・ノイマン型」と言われる現在のコンピュータの原理仕組の限界ともいえます。     「 The C++ Programming Language 」の著者ビャーネ・ストロヴストルップ( Bjarne Stroustrup, 1950- )は、     この書の中で、オブジェクト指向の実現に関して、 C++ の言語仕様上どうしても実際の複雑になる、出来ない     点がある、とあちこちで嘆きのコメントが散らばっています。     もっと画期的なコンピュータが登場しないと、考えるコンピュータ、ロボット等、真のオブジェクト指向は実現     しないのかもしれません。 (4)オブジェクト指向プログラミングとオブジェクト指向で無いプログラミング    どちらがいいか、という話ではまったくありません。    オブジェクト指向の利点として、拡張性、再利用性、情報隠蔽などが言われますが、これは「オブジェクト指向」    でなくても実現可能です。 C 言語でも Fortran 言語でも可能です。プログラミングするにあたって、「物」を中心に    考えるか、「処理』を中心に考えるか、というのが大きな違いです。
  • 10. 6.「もの」を認識する(2) E F A A これは、「 A 」の上部先端部分を消したものです。 何の予備知識が無いと、「 A] だとは思わない人も居るでしょうが、 事前にアルファベットだと知らされていれば、ほとんどの人は 「 A 」だというでしょう。 その場合、欠落してる部分を、無意識のうちに補って「 A 」だと 認識しています。 「 E 」と「 F 」は、図形的には以外は良く似ています。 「 E 」と「 F 」は、下部の横棒のある無しが大きな相違です。 その横棒ある無しの違いを認識して判断します。
  • 11. 6.「もの」を認識する(3) この図を見たときに、「アルファベットの一部がボックスに隠れている」との認識があると、判定がしやすくなります。 線だけの図形にしたのが一番左側の図で、「アルファベットの一部がそのボックスに隠れている」と認識するには あいまいです。 このように、2つのもの(アルファベットとボックス)と認識することと、単に線の図形とでは、認識度が大きく異なる。 下の図を見てください。 これは何を表している? B E
  • 13. 8.フレーム理論(マービン・ミンスキー)(2) 壁 床 テーブル 壁 ホワイトボード? 概ね、下記のような「物」から成り立ってると思う人が多いと思います。ここには遠近感があり、「物」の影に隠れて いるものすら、無意識のなかで補っています。 単に直線だけで成り立った図形だと見ると、想像力を含まらせるといろんなことが想定されます。
  • 14. 9.オブジェクト(オブジェクトが相互に作用して物事が起きる。メッセージ交換) 吉田さん 内田さん オブジェクト:物の存在、物の自律性、物の相互関係と相互干渉で捉える。 吉田さん 内田さん ノートを貸して いいよ。はい。どうぞ。 ありがとう! ノート 存在 相互作用 ノート
  • 15. 10.メッセージ (Message) とふるまい (Behavior) 社長 部長 部長 課長 「売上倍増!」 「売上倍増!」 「売上倍増!」 同じメッセージでも、受け手によって振る舞いが異なる。(重要)=>ポリモーフィズム(多様性)と呼ぶ 部下 自分の部下にまかそう もっと頑張る ! どうせ出来ないので、特に何もしない・・・ ! Message Message Message Behavior 「売上 50% 増!」 Message 少しは頑張るか・・・ Object/Class) Object/Class) Object/Class) Object/Class)
  • 16. 11. Hello Worl d Hello World プログラムを作成して動かしてみる。 1.編集ソフト pcpad を起動して、上のファイルを作成する。 2.ファイル名は HelloWorld.java とする。(しないといけない。クラス名とファイル名が同じにする) 3.保存する。 4.コンパイルする。(エラーが出たらファイルを修正する。) 5.実行する。 public class HelloWorld { public static void main(String[ ] args) { System.out.println("Hello Java World"); } } クラス名 メインメソッド名
  • 17. 11. Hello World (2) - コンパイルと実行の仕方 - 今回の実習では Jcpad という開発ツールを使います。 一般には eclisp という開発ツールを使うことが多い。 ① 保存 ② コンパイル 実行 ③ コンパイル結果が表示される。 HelloWorld.java HelloWorld.class コンパイル
  • 18. 11.再び、 Hello   World(1) 先のプログラムは、オブジェクト指向の「オ」の字も無いプログラムなので、オブジェクト指向っぽく 書き直して みました。 NewHello クラスと Student クラスの2つ作成し、 NewHello クラスから Student クラスに Hi というメッセージを送ると、 Student クラスが、コメントを返す、と言うプログラムです。 public class NewHello{ public static void main( String [] args ) { Student suzuki = new Student(); Student yoshida = new Student(); suzuki.Hi(1); yoshida.Hi(2); } } class Student {      String comment1 = " ハロー!!! ";      String comment2 = " こんにちわ! ";      public void Hi(int i){ if(i==1){      System.out.println(comment1); } else if(i==2){      System.out.println(comment2); }      } } NewHello クラス Student クラス オブジェクト suzuki オブジェクト yoshida Hi new new
  • 19. 11.再び、 Hello   World(2) - コンストラクタ - JAVA で重要な基本要素であるコンストラクタを追加してみます。 ( 紙面の都合で yoshida さんは省略します。) public class NewHello2{ public static void main( String [] args ) { Student suzuki = new Student(); suzuki.Hi(1); } } class Student { String comment1; String comment2; Student(){ System.out.println("Student が生成されました "); comment1 = " ハロー !!!"; comment2 = " こんにちは! "; } public void Hi(int i){ if(i==1){ System.out.println(comment1); } else if(i==2){ System.out.println(comment2); } } } コンストラクタ  ・オブジェクトが生成された時に行う処理を記述する。  ・コンストラクタ名はクラス名と同じでなくてはならない  ・ public も戻り値もつけない。 この時 (new )にコンストラクタ が実行される。 コンストラクタを利用して 文字列を代入する。