こんにちは!
ナビゲータのEVEです。
本日、奥様と一緒に司法書士の方にあってきました。面談理由は、どの組織形態で起業したらいいのかという相談です。この場で何回か起業について書いてきました。その時の内容としては、LLP(有限責任事業組合)について興味があり、それで起業したいという話をしていたのですが、本日司法書士の方と話したところ、ちょっと、心動いています。
LLP(有限責任事業組合)は、ず〜っと、組織変更しない場合は利益があるのですが、組織変更を念頭にいれると、魅力が薄れます。もし、最終組織形態が、株主会社なら設立当初から、株主会社にした方がメリットが大きいようです。ただ、株主会社になった場合の収益を考えたら、そのメリットとは雀の涙ぐらいのような気がするのですが・・・?捕らぬ狸の皮算用をしていますが、事務手続きの苦労などをも含め一ヶ月ぐらいをめどに結論を出したいと思います。
それでは、今日は、プログラム研究室から、静的メソッドとインスタンスメソッドの違いについて書かせて頂きます。
[今まで忘れていた静的メソッド?]
静的メソッドって知っている人います?忘れていたのですかね?ChatGPTとプログラムをデバックをしていて、初めて聞いたような気がします。以前Javaの試験で使用した資料に目を通していますが、ないようです。本当になかったかどうか微妙なのですが・・・?
では、静的メソッドとはどのようなモノでしょうか?ChatGPTに聞いてみます。
■静的メソッド(static method)
★定義
静的メソッドは、クラスに直接属するメソッドで、インスタンスを作成せずに使用できるメソッドです。クラスそのものに関連する機能を提供します。
★特徴
クラス名を使って呼び出します(インスタンスを必要としない)。
通常、static キーワードで定義されます(言語によって異なりますが、例えばPHPやJava、C++ではstaticを使用)。
静的メソッドの中では、インスタンス変数(オブジェクト固有の変数)を参照できず、静的変数(クラス共通の変数)のみを操作できます。
はっきり言って、静的メソッドでの製造は、従来の構造化プログラミングなどプログラムと同じような感じです。だったら、なんで、インスタンスメソッドなんかあるのだろうという疑問が浮かび、それについて、ChatGPTに聞いてみました。
インスタンスメソッドが存在する理由は、オブジェクト指向プログラミング(OOP)の核心となる「状態管理」や「柔軟性」にあります。以下、インスタンスメソッドが必要とされる理由について詳しく説明します。
❶オブジェクトごとの状態を管理するため
インスタンスメソッドは各オブジェクトの固有の状態(プロパティ)にアクセスして操作するために存在します。オブジェクト指向の基本的な考え方は、実世界の物体や概念をプログラム内でモデル化することにあります。例えば、異なる「車」オブジェクトを扱う場合、各車にはそれぞれの状態(色、速度、燃料量など)が異なるため、インスタンスごとにこれらの状態を管理しなければなりません。
❷カプセル化とデータの隠蔽
オブジェクト指向では「カプセル化」という概念が重要で、これはデータ(プロパティ)を隠し、直接アクセスさせないようにするための仕組みです。インスタンスメソッドは、オブジェクトの内部状態を安全に管理・操作し、外部からの直接操作を防ぎます。このように、データにアクセスするための専用メソッド(getterやsetter)を提供することで、セキュリティやデータの整合性が保たれます。
❸柔軟性と拡張性
インスタンスメソッドは多態性(ポリモーフィズム)を活かして、同じメソッド名でも異なる動作を持たせることができます。これにより、各オブジェクトのクラスに応じて異なる振る舞いを実現できます。静的メソッドではこの柔軟性が制限され、特定の動作に依存した設計になりがちです。
❹オブジェクト同士の相互作用を実現するため
インスタンスメソッドは、複数のオブジェクトが相互にやり取りしながら状態を変化させるような複雑な動作を実現するために必要です。オブジェクト同士の関係を持ち、個々のオブジェクトが他のオブジェクトと連携するシステムを構築する際、インスタンスメソッドが役立ちます。
■まとめ
・インスタンスメソッドの必要性は、プログラムにおけるオブジェクトごとの状態管理や、複雑な相互作用を柔軟に実現するためです。特に、オブジェクト指向の基本的な概念である「カプセル化」や「多態性(ポリモーフィズム)」を活用する際に重要です。
・静的メソッドは便利である一方、柔軟性や個別の状態管理が必要なケースではインスタンスメソッドが不可欠です。
以上について、意訳すると、いろいろな人がプロジェクトに参加することを考える場合、従来のプログラム手法(静的メソッドのような開発手法)より、オブジェクト指向言語での開発が効率的、拡張的だということだと思います。
[あとがき]
Javaの資格は、2016年にBronze、2017年にSilverを取得し、そのまま放置していました。まっ、インターネットから仕事をしてもよかったのですが、実務を経験したことがないということがためらいの原因となりました。だったら、PHP、JavaScript、HTMLなどなどいろいろあったのですが、昔ながらのプログラマとしては、自分のプログラム開発手法を自分のシステムに適用するのは問題ないのですが、他のシステムに適用していいのかどうか悩みました。そんな悩みを解消してくれたのが、ChatGPTです。自分が作ったプログラムを元に、最新のソースに変換してくれるのです。自分の名誉のために言うと、そんなに大きくは違いません。但し、ChatGPTから提供されたロジックは、目から鱗な点が多々あります。そんなAIの力を利用できるのと同時に、新型コロナ感染症の数年を通して、リモートワークが普通になったという点も大きいでしょう。
今まで、SNSや、株とかもやってきましたが、エフェクチュエーション的な考え方で言うと自分でコントロールできないことはビジネスにならないということは、この数年身をもって知りました。
そんな状況で、私が考える環境が揃い、かつ、ブログを通して個人的な悩みを話してきましたが、それも、このブログを多くの人に見て頂いたことにより解消しつつあるような気がします。
今まで、引きこもりのような生活だったのですが、これから、一歩前に出ます。
では、また!
追伸・・・。
このブログを書き終えて、もしかして、静的メソッドには、別な言い方があるのでは?っということで探したところありました。クラスメソッドです。クラスメソッドで資格を取得した時の本を調べてみると、ありました・・・。勉強していたのですね・・・。忘れていただけでした・・・。ここ1、2年オブジェクト指向でプログラミングしていますが、脳裏にさえ出てきませんでした。来年JavaGoldの試験を受けますが、Bronze、Silverでの勉強の復習をしたいと思います。
■起業のリスクヘッジについて考える 〜システム開発研究室〜(2024年10月1日)
https://fanblogs.jp/bahamuteve/archive/496/0
■LLPとは? 〜システム開発研究室〜(2024年10月2日)
https://fanblogs.jp/bahamuteve/archive/497/0