疑問解決記『実体験に基づきながら』

幅広い情報を共有したい。その想いを伝えるために、筆者の体験を絡めて専門的な事から、日常的な事まで幅広く取り扱っていくブログ。

Java プログラミング講座#2「クラスとオブジェクト指向」


にほんブログ村 その他日記ブログへ
このブログがいいと持った方は

↑クリックお願いします!





これからJavaやPythonなどでプログラミング始める人に向けた無料講座!

このシリーズを見れば、自分でアプリ開発する能力が身に付く!

今回はJavaとPythonの最大の特徴

オブジェクト指向とクラスについて話していく

C言語との違い、オブジェクト指向

オブジェクト指向は概念で、C言語にはない概念

その概念のおかげでコードの記述が楽になったり

インスタンスというものが扱えて、楽になったりする

C言語より柔軟性が高いかな~と個人的に思う

オブジェクト指向とは?

先にオブジェクト指向という概念の説明から

オブジェクト指向とはいくつかのクラス・コード群を一つのオブジェクト(モノ)として考える定義

なんじゃそりゃって思うかもしれないけど

分かりやすく言うと、各コード群をパーツ化するという考えで

例えば、お金を引き落とすコードを組む時に

本人確認やら色々な手続きを行わないと行けないんだけど

その一連の動作のコードを1つのモノとして扱う

1つのモノとして扱うことで、そのオブジェクトを実行すれば

何回でも同じコードを呼び出すことが出来る。

また、オブジェクト指向ならではの「インスタンス」なるものがあるんだけど

後でも詳しく触れるけど、一度 以下の内容を頭の片隅に置いておいて欲しい

インスタンスはコードに実態がまるであるかのように扱うこと

例えば、スライムを表現するコードを書こうとするとき、ステータスなどがいるんだけど

そのステータスの設定を実態として持つんだ、またステータスはレベルなどで変更されるから

固定ではなく、まるで流動性がある実態のように扱う必要があって

そこで扱うのがインスタンスって事、ほんのりと覚えておいてね


じゃあ、クラスとはなんぞ?っていうと

コード群をまとめた1つ以上の役割を持つコード群の名前を指す

例えば、決済するコード群を決済クラス(Settlement)と名付けたりする

クラスの中には主に、コード群をまとめた関数やコード・フィールドなどを持つ

意味わからんって思うかもしれないけど

後で書くコードでも、もう一度説明するから心配無用!

クラスってのは「コードをまとめたものを指すのね、ふーん」程度でおk

実際にクラスファイルの作成を行う

PythonとJavaでコードの書き方やファイル作成が異なるんだけど

今回はjavaについて触れていく。

プロジェクトファイルの作成方法から!

Javaのプロジェクトファイル作成

ファイルから新規でJavaプロジェクトを選択する

ファイルから新規でJavaプロジェクト

筆者の場合、JavaもPythonも入れてるからちょっと違うかも!

もし新規にない場合はその他を押して、Javaを探してJavaプロジェクトを押す

無ければその他からJavaのプロジェクトファイルを探す

作成おすとクラス名を求められる(ここではteachとして進める)

プロジェクトファイルの設定

これでパッケージエクスプローラーにteachファイルが作成される

パッケージエクスプローラーからteachを見つける

teachファイル内のsrcを右クリックし新規からクラスを選択する!

src右クリックから新規でクラスを選択する

クラスファイル名をFirstとし作成する(クラス名の最初は大文字)

クラス名を決定し、完了

なんでクラス名の頭文字が大文字なのかは実際にコードを書くときに説明する!

こんな感じでクラスが作られる
ちょっとした計算プログラムを作っていく

四則演算機能のコードを書いていく!

基本的に数や文字、オブジェクトなどを格納する文字列が必要になる

整数の定義方法は

※int 変数名=好きな数字

となる

小数点の場合はdouble 変数名=小数

この変数名を宣言するときにFirstと宣言してしまうと

型名なのか変数名なのか分からなくなるため

クラス名の頭文字は大文字、変数名は小文字がお勧め

変数の定義

最初のpublic static void mainは何を指すかというと

まず、クラス内に関数を作りますって宣言をしてる部分

基本的にどういう状態のモノの関数ですか?ってことを示していて

publicはどこからでも呼び出し可能、staticはファイル起動時から常に存在している状態、voidは関数を使った時に何を出すかの種類

mainは変数名だから本来は好きな名前で良いが、

main(String[] args)だとコマンドプロンプトからの認識で優先されるっぽい

コマンドプロンプトとかでjavaのファイルを起動すると行われるのがこの一文(main)の中のコード

もう一度説明すると

呼び出し可能範囲[public] 動的(とある時から存在)か静的(常に存在)か[static] 関数呼び出し時に戻す種類[void] 変数名[main]

少しわかりづらいと思うのが動的か静的か、関数呼び出し時に戻す種類だと思う

staticを付けなければ「ある時点で使える動的な扱い」になり、付けると「常に存在している静的な扱い」になる

ちょっと複雑だからその分野で詳しく解説する

また、関数呼び出し時に戻す種類っていうのはvoidだと何も返さず

intだと整数を返すことになるんだけど、何が違うかは後述する

とりあえず今はこのFirstファイルを起動すると 

first(変数名)に1、two(変数名)に2,three(変数名)に3が入るってこと

おk??

文字に数字を割りあてたって事ね!

さっき文字に割り当てた数字を変数同士で計算する

firstには1、twoには2を割りあてた(計算結果は2のはず)

次に計算する変数を作る

ここでint calc は数字を入れる予定の変数名(calc)だけ宣言

宣言した変数の中身は基本的に書き換えることが出来る

クラスファイルを右クリックして実行からJavaアプリケーションをクリック

クラスファイル右クリックで実行からJavaアプリケーション

実はこれだと何も出ません!!

実行結果

実行すると計算はされていても確認は出来ないから

ここでコンソールに計算結果を出すコードを追加する

表示部分を追加

System.out.println()は今はカッコ内に入れた中身が出るんだなってのを覚えておけばおk

直接文字入れる時はSystem.out.println("mozi")でおk

数字や変数名の場合そのままカッコ内に入れればおk

これで数字を入れればおk

計算結果が出力に表示されるようになった

次に計算するための関数を作っていく

初めに関数の宣言を行う

関数名の宣言

この中に掛け算用のコードを書いていく

さっきと異なるのは、カッコ内の所

kakeru関数(メソッド)を呼ぶときは2つの数字が必要と定義している

()内は無くても可、()内を使うときの判断は

その関数を跨いで使いたいものがあるかどうか

関数の有効範囲(スコープ)が有って

基本的に関数内で宣言した数字はその関数内でしか扱えない

例えばmain内で宣言した変数名firstは、kakeru内では扱うことが出来ない

そこで使うのが()に入れる宣言、

定義方法は(型 変数名)で2つ以上の型を入れる時は「,」を挟めばおk

今回は2つの整数を必要とするって宣言!

計算用の関数の作成

処理の流れを説明すると

mainプログラムを起動➡変数名の宣言➡

➡kakeru関数を起動(main内のfirst,twoを渡す)➡kakeru変数に計算結果を格納➡

➡kakeru内で計算し表示

他にも割り算や剰余などもあるけど割愛する

ここまででプロジェクトの作成から関数(メソッド)の作成までを学んだ

次回はクラス内で扱えるインスタンスやフィールドについて話していく



$('section.archive-entry').eq(0).after('