2007-01-01から1年間の記事一覧

クラスメソッドとクラス変数

これまで、メソッドと変数は全てクラスに属し、インスタンスを生成してから使用するものと学んできました。 クラスメソッドとクラス変数はインスタンスを生成せずに使うことができます。 クラスメソッド クラスメソッドはstaticメソッド(静的メソッド)とも…

インターフェイス

抽象クラスは抽象メソッドと呼ばれる定義だけのメソッド(機能)を定義することが可能なクラスでした。 インターフェイスはこの抽象クラスをさらに抽象化し、publicな抽象メソッドのみで構成された抽象クラスと言えます。 また、インスタンスを作ることがで…

インターフェイス

んー、ちと苦しい。 インターフェイスをしっかりと説明するのって難しいですorz 後で修正する可能性大ということで仮版(コメント歓迎!)。

抽象クラス

これまで継承を使ってクラスを拡張していくことを学んできましたが、逆に考えれば共通する項目(インスタンス変数、メソッド)を抽出して行けば効率よくクラスを構成できると考える事ができます。 本・CDなど幾つかの種類の商品を扱うオンライン ストアを構…

コンストラクタ

コンストラクタとはクラスのインスタンスが生成される時に呼び出される特殊なメソッドでした。 JVMはコンストラクタが呼び出されるタイミングでヒープ領域にインスタンスを生成します。 この時、メソッド領域にあるクラス情報からどんなインスタンス変数があ…

オーバーロード

メソッドを定義していくと引数は異なりますが似たようなメソッドを作りたい状況が発生します。 プログラミング言語によっては同じ名前のメソッドを定義することは禁止されていたり推奨されていないこともあります。 ですが、Javaでは引数や戻り値が異なれば…

メソッド

これまで何気なく使ってきたメソッドに関して詳しく見ていきましょう。 関数 関数とは元は数学の用語であり、Wikipediaによれば次のように説明されています。 関数(かんすう、function)とは、ある変数に依存して決まる値あるいはその対応を表す式のことで…

オーバーライド

機能を拡張することはクラスを継承することで実現できましたが、既存のメソッドの振る舞いを変更したい場合もあります。 そのような時、メソッドのオーバーライド機能を使うことでスーパークラス(基底クラス)に変更を加えずにメソッドの振る舞いを変更する…

Javaは型(type)を重視した言語仕様となっています。 これは様々なクラスのインスタンスを上手に扱う為に必要な機能です。 変数の型 変数の型(type)はデータの種類を表しました。 例えば本(Book)というクラスがあるならば本(Book)という型の変数を定…

継承

継承はあるクラスを拡張して新たなクラスを作る機能です。 継承は主に既存クラスの拡張や変更などに用いられる機能ですが、オブジェクト指向プログラミングを学ぶ上で最も基本的な概念となります。クラスFooがある時、継承を利用してクラスBarを作るにはexte…

アクセスレベル

Javaの重要な仕組みの1つにアクセスレベルがあります。 アクセスレベルとは各クラスの独立性を高め再利用性と保守性を高める為に情報を可能な限りブラックボックス化する仕組みです。 メモリアクセスの功罪 C言語では常にメモリ上のデータを意識していまし…

JVMのメモリ管理

ここで頭の中を整理する為にJVMのメモリ構造に関して触れておきます。 JVMの管理するメモリ領域には大きく2つの区画があり、それぞれスタック・ヒープエリアと呼ばれます。 ヒープ ヒープエリアは主にインスタンスを管理するメモリ領域です。 ヒープエリア…

制御構文

全てのアルゴリズムは可読性はともかくとしても条件分岐文と繰り返し文を使うことで実装できます。 Javaでは条件分岐文としてはif文とswitch文を、繰り返し文としてはfor文とwhile文をサポートしています。ここでは今後の学習に必要な範囲で解説します。 こ…

プリミティブ型変数

C言語をはじめとするほとんどの言語で整数の四則演算や比較演算を行うことができるように、Javaでも整数等の四則演算や比較演算を行うことができます。 プリミティブ型 プリミティブ型(基本型)とは、整数型(int)や浮動小数型(float)などのように基本的な…

Javaの文法

それではJavaによるプログラミングを勉強していきますが、幾つかの基礎知識を学ぶところから始めます。 予約語 どのようなプログラミング言語でも予約語と呼ばれる特別な単語があります。 予約語とはシステムで予約されている単語のことで、言語仕様の中で特…

参照型変数

Javaでは全てのデータやメソッドはクラスに属し、原則としてインスタンスを生成して利用すると学びました。 では、インスタンスは作成された後はどうなるのでしょう? 参照 もし、同じメソッドを何度も使いたい場合でもその都度インスタンスを生成しなければ…

プログラムの実行

作成したプログラムを実行するには、クラスを右クリックして[実行]-[Java アプリケーション]を選択します。 実行結果は、コンソールビューに表示されます。 繰り返して同じプログラムを実行するには、メニュー下部の実行アイコンをクリックします。 尚、Java…

インスタンス

C言語ではmain関数ありきで、プログラムはmain関数から始まり、main関数の中で変数を宣言しながら様々な関数を呼び出しました。 つまり、プログラムは関数を中心に構成されていたと言えます。これに対してJavaは、クラスを中心にプログラムを構成します。 全…

コンパイル

ナビゲーターで確認していると、特にコンパイルを行っていないのにクラスファイルが作成されていると不思議に思ったかもしれません。 実はEclipseでは、ソースファイルのコンパイルは自動的に行ってくれます。 デフォルトの設定ではファイルを保存するたびに…

パッケージの作成

空のパッケージを作成するということは、ファイルシステム上ではフォルダを作成することに当たります。 実際のクラスファイル(ソースファイル)が置かれるまではフォルダとの違いはありません。Eclipseでパッケージを作成するには、ソースフォルダで右クリ…

クラス

Javaなどのオブジェクト指向言語で最も基本的な概念はクラスです。 これを一言で説明するのは難しいので、まずはクラスという概念が生まれた経緯から紐解いていきます。 クラス クラスはJavaを初めとするオブジェクト指向言語で、プログラムを構成する最小の…

パッケージエクスプローラーとナビゲータービュー

Eclipseでは幾つかのウィンドウが開いていますが、これらのウィンドウはビューと呼ばれます。 現在開いているビューで右端にあるビューはパッケージエクスプローラーと呼ばれるJavaを開発する時に最も使用頻度の高いビューです。 このビューは主にソースフォ…

クラスの作成

それでは、example01.Example01クラスを作成してみましょう。 ソースフォルダのexample01パッケージで右クリックしてメニューを表示し、[新規]-[クラス]を選択します。次に「新規Javaクラス」で名前にクラス名「Example01」を入力して、終了を押します。 こ…

プロジェクトの作成

プロジェクトとはEclipseを使ってプログラムを作成する時の1単位です。 どの程度で1単位とするかは状況によって異なりますが、アプリケーション毎にプロジェクトが作られると思えば間違いではありません。 ただし、状況によっては同じアプリケーションでも…

導入

Eclipseはデフォルトでは日本語されていないため、日本語環境で動かす為には日本語化する必要があります。 ここでは手っ取り早くインストールできてデフォルトで日本語化もされているAll-In-One-Eclipseを使用していきましょう。 インストール 配布元のAll-I…

Javaの特徴

Javaには様々な特徴がありますが、オブジェクト指向とは…と始めてしまうと解りにくく勉強のモチベーションも続きません。 ここでは、これから学んでいく上で前提となる特徴だけを説明します。 Java仮想マシン C言語ではコンパイラにより実行可能なプログラム…

開発環境

今後の講座は統合開発環境Eclipse(V3.2)をベースに行います。 入門者向けの講座の場合、開発環境を使ってはならないような風潮もありますが、実際のプロジェクトに投入されたときにEclipseを使えなければ話にならないのも事実です。 よって、この講座ではE…

開発環境とJava仮想マシン

今回よりJavaを学んでいきますが、実際のコーディングに入る前に開発環境とJavaの特徴に関して触れたいた思います。 尚、このJava入門はC言語などの非オブジェクト指向言語を触ったことがある人を対象としています(習熟している必要はありません)。 プログ…

ポインタ

C言語で最も重要で最も難しいと言われるのがポインタです。 しかし、この講座の目的はJavaを理解することである為、ポインタの概念のみを把握すれば構いません。 どのように使われるのか、どのような利点があり、どんな問題を持っているかを知りましょう。 …

ポインタとFlash

Java技術者の為のC言語入門ということで構造体までは書き上げましたが、ポインタはやはり説明するのは難しい。 書くには書けてもテキストだけで説明するには厳しい。 そもそも変数の宣言とメモリに関することから、できることならば図を織り交ぜたいとは思っ…