Javaを学習する中でオブジェクト指向とクラス、メソッド、スコープについて学んだので学習記録を残します
まず、オブジェクト指向とは何か
オブジェクト指向とは、アプリケーションの中で扱う対象をオブジェクト(モノ)と見立てて、その組み合わせによって機能を作り上げていく手法のことを言います。オブジェクトとはオブジェクト指向の根本であり、「対象」「物」という意味で、プログラミングにおいてはデータと処理の集まりを意味している。
クラスという概念について
クラスはプログラム全体の設計図です。 大まかにデータ(フィールド)と手続き(メソッド)の集合から構成されるしくみです。フィールドやメソッドなどクラスの構成要素をメンバーと言います。
public class Peerson { }
クラスには、一般的にはPascal記法(大文字はじまり、単語の区切りも大文字)で、クラスが表すモノを適切に表すような名前を命名します。
クラスの役割によっては、Abstract~(抽象クラス)、~Exception(例外クラス)、~Test(テストクラス)のように、接頭辞/接尾辞を付与する場合もあります。
new演算子
クラスは、いわゆるモノの設計図です。利用するにあたっては、設計図をもとに具体的なデータを備えたモノ(オブジェクト)を作成する必要があります。オブジェクトはインスタンスとも呼ばれ、オブジェクトを作成することをインスタンス化と言います。
インスタンス化は、new演算子によって実施できます。
Person a = new Person();
メソッド
メソッドはプログラムのパーツ(一部機能)の設計図です。 メソッドブロックで囲われた領域でパーツがどのように動くかを記述 します。メソッドのことを関数と呼ぶこともあります。基本的に1つの機能ごとに1つのメソッドを作成します。メソッドブロックは下記のように定義します。
[修飾子] 戻り値の型 メソッド名( 引数の型 引数名 , ... ) { 命令群 }
class SampleJava_1 {
public static void main(String[] args) {
//メソッドのしくみ
int print = sum( 2 , 3 ) ;
System.out.println("print:" + print);
}
static int sum( int num1 , int num2 ) {
int calcResult = num1 + num2 ;
return calcResult ;
}
}
mainメソッド
mainメソッドはプログラムが起動されて必ず一番初めに実行される 特別なメソッドです。 実行したクラス内にmainメソッドが存在しなければ、処理を開始 することができないとしてエラーになります。mainメソッド内の処理を全て実行し終えたらプログラム終了となり ます。(mainメソッドに始まり、mainメソッドに終わる) 戻り値を返す相手もいないため戻り値の型はvoidが設定されています。
mainメソッドは書き方が決められています。 必ず下記のように記載します。
public static void main( String[] args ) { }
mainメソッド 起動
~mainメソッドに始まり、mainメソッドに終わる~
他のメソッドに寄り道しても 必ずmainに戻ってくる。
スコープとローカル変数
変数には有効範囲があり、これをスコープと言います。 変数宣言されたブロック内( { } で囲まれた範囲)がその変数の スコープとなります。 スコープ外からのアクセスはすべてエラーとなります。またメソッド内で定義される変数をローカル変数と言います。 当然スコープ外である他のメソッドからは参照したり代入したり できません。
class SampleJava_2 {
public static void main( String[] args ) {
//ローカル変数のしくみ
String message = "不正です" ;
//int print = 0 ; 本当はここにprint変数を定義しておくと同じスコープないでこの変数を呼べる
if( args.length == 2 ){
int num1 = Integer.parseInt( args[0] );
//★スコープが別であれば名前が同じ変数を定義することは可能です
int num2 = Integer.parseInt( args[1] );
//★スコープが別であれば名前が同じ変数を定義することは可能です
int print = sum( num1 , num2 );
//ここで変数を定義してしまうとスコープが違うところではprintを呼ぶことができずにエラーになってしまう。
}else{
System.out.println( message );
}
System.out.println( "print:" + print );
//★(エラー)スコープ外からのアクセスはできません(ネストになっているブロック内の変数)
}
//スコープが違うところでは名前が重複しても問題ない
static int sum( int num1 , int num2 ) {
int print = 0 ;
int calcResult = num1 + num2 ;
return calcResult ;
}
}
以上がオブジェクト指向とクラス、メソッド、スコープについてです!参考までにどうぞ!