クラスライブラリとはなんなのか?
私は、クラスライブラリとはプロパティやメソッドを備えたもの。
そういう理解をしていました。
しかし、今、その認識が揺らいでいます。
それは、System.Text との出会いがきっかけ。
Imports System.IO
Module mdlFileSystem
Function FileSeek(ByVal aFile As String, _
・・・・・
If File.Exists(aFile) Then
Dim Buf(1) As Byte
Dim ec As System.Text.Encoding = System.Text.Encoding.Default
Dim fs As FileStream = New FileStream(・・・・・)
これは、次のようにも書けます。
Imports System.IO
Imports System.Text
Module mdlFileSystem
Function FileSeek(・・・・・) As String
・・・・・
If File.Exists(aFileName) Then
Dim Buf(1) As Byte
Dim ec As Encoding = Encoding.Default
Dim fs As FileStream = New FileStream(・・・・・)
この New 宣言を必要としない関数群とも言えるクラスライブラリ。
ここで、何が問題かと言うと実は自作の LenB関数の扱い。
Public Class Text
#Region "LenB メソッド"
・・・・・
#End Region
#Region "LenB メソッド"
・・・・・
#End Region
End Class
このように書くこともできます。
別にクラスライブラリなどと上段に構えなくても標準ライブラリでも用は足ります。
言わば、複数のプロパティやメソッドを装備しないのだ単なる標準ライブラリのクラスライブラリ版。
本格的なクラスライブラリ、標準ライブラリのクラスライブラリ版、標準ライブラリ。
一体、この3つをどう切り分けすべきなのであろうか?
VB2008を学び始めて3週間。
しかも、プログラマでもなんでもない素人。
この辺りをどのように考えたらいいのでしょうか?
どうにもスッキリしません。
「このように考えたらいいですよ」という回答をお願いします。
No.1ベストアンサー
- 回答日時:
言葉通り 「クラス」の「ライブラリ」
クラスが何であるかをまず調べるべきでは・・・?
ただのサブルーチンの塊かもしれないし………それは作り方によって違う。
通常はC++とかC#、あるいはjavaとかから来ている言葉だから、VBでそのまま表現されていて「クラスってなんじゃい!」って話になってるだけかもね。
>ただのサブルーチンの塊かもしれないし………それは作り方によって違う。
「ただのサブルーチンの塊もありかな!」という考えを持ちつつあります。
例えば、非連結でのデータベースとのアクセスする一つのクラス。
正に、データベース言語のフォーム機能の再現。
ですから、いかにもクラスって感じです。
だが、今作っているクラスは、単に
txt.LenB
txt.XXXXX
txt.YYYYY
と、グループ化しているだけ。
でも、「それはそれでもよい」と思いつつあります。
>あまり深く考えずに「使える機能を使う」という考え方でもいいのではないでしょうか。
そんな感じです
No.2
- 回答日時:
標準ライブラリというのは、関数の集まりです。
クラスライブラリはクラスの集まりです。クラスやインスタンス、オブジェクトという考え方が身についていないと、すっきりと理解するのは難しいと思いますが、まだプログラミングを始めて間もないということでしたら、あまり深く考えずに「使える機能を使う」という考え方でもいいのではないでしょうか。
ちなみに、なぜSystem.Text.EncodingクラスはNewする必要がないかというと、このクラスは公開されたコンストラクタを持っていません。利用者が明示的にNewしてインスタンス化することはできないということです。
ですが、Dim ec As Encoding として宣言された変数ecは、ちゃんとEncodingクラスのインスタンスを指しています。なぜかというと、Encoding.Defaultプロパティが、内部的にEncoding型のインスタンスを生成して返すからです。
Encodingクラスに定義されたメソッド、例えば GetByte() を ec.GetByte("hoge") のように呼び出すことができるのはそういう理屈です。
決して「複数のプロパティやメソッドを装備しないのだ単なる標準ライブラリのクラスライブラリ版」というわけではないのです。
この回答への補足
>このクラスは公開されたコンストラクタを持っていません
New は、その通りだと理解しています。
が、負に落ちないのは、次の点です。
Import System.text
Dim ec as System.text.・・・
この両者でも exe ファイルのサイズは同じ。
Import System.text の一文が System.txt に置換されていれば・・・。
Ststem.Text 名前空間の Encoding クラスの GetEncoding メソッドだけを宣言すれば・・・。
この両者では exe ファイルのサイズは違う
「コンパイラは必要な置換対象を特定してからコンパイルしている」
ならば、冒頭に Import文を書いてもいいのじゃないか?
Dim ec as System.text.・・・
でなく
Dim ec as Encoding.・・・
でいいのじゃないか?
この辺りは、どうなんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UMLのクラス図はmain()も含むん...
-
「天声人語」をインターネット...
-
委員長になったのですが、指示...
-
成人式の後中3のクラスで集まろ...
-
eclipse でクラスに色
-
1 つのヘッダファイルに複数の...
-
修学旅行での演芸大会の出し物...
-
EclipseでJSPのコンパイルエラー
-
main()を持つクラスが2つ以上...
-
エクセルのデータ振り分け方法...
-
string formatについて
-
DIVの中の<a>について
-
packageとimport の違いって?
-
遺伝的アルゴリズムによる繰り...
-
関数の作成は・・・?
-
ATLとMFCの違いは何でしょうか?
-
どこからも呼ばれていない無意...
-
eclipeでクラス作成ができない
-
java eclipse 型に解決できません
-
JAVAのExceptionについて(エラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の重複する値とその個数を...
-
どこからも呼ばれていない無意...
-
java eclipse 型に解決できません
-
「天声人語」をインターネット...
-
main()を持つクラスが2つ以上...
-
1 つのヘッダファイルに複数の...
-
IPアドレスのクラスAを取得して...
-
同一パッケージにあるクラスが...
-
同じクラスにならない確率を教...
-
重複エラーを解決するには
-
共通で使う関数を集めたクラス...
-
3年間同じクラスになる確率
-
複数のクラスで共通した関数を...
-
同じパッケージ、クラス名が含...
-
A・B・Cクラスとは?
-
自作のクラスファイルがインポ...
-
ATLとMFCの違いは何でしょうか?
-
eclipse でクラスに色
-
コンボボックスのマウスホイー...
-
UMLのクラス図はmain()も含むん...
おすすめ情報