5つのクラスで、パッケージ構造がなくても大丈夫です。しかし、プログラム コードのより高いレベルの編成について考え始めることもできます。
データ オブジェクトを 1 つのパッケージ (com.you.program.data) に入れます。
GUI を少なくとも 1 つの他のパッケージ (com.you.program.ui) に入れます。
メイン プログラムは com.you.program または com.you.program.main にある可能性があります。または、より簡単な場合は、ほとんどが UI を起動するだけの場合は、UI パッケージにメインを配置するだけです。
com.you は、理論的にはあなたのウェブサイドを逆にしたものであり、'program' はあなたが取り組んでいるプログラムの名前であることに注意してください。
ノート
アプリケーションのビジネス ロジックをユーザーに接続する UI から分離するかどうかについては、理論的な議論が続いています。これにより、別の UI を前面に配置することが容易になり、たとえば、デスクトップ/ラップトップで実行するユーザーには Swing インターフェースを、タブレットや電話でブラウザーを実行するユーザーには Web インターフェースを許可できます。
それは悪い考えではなく、それを分離する 1 つの方法は、IDE で 2 つのプロジェクトを作成することです。1 つは UI レイヤー コードを保持し、もう 1 つはビジネス レイヤー コードを保持します。これは明確に定義されたパターンであり、うまく機能します。
UI レイヤーとビジネス レイヤーを分離するもう 1 つの方法は、パッケージを使用することですが、IDE は依存関係の管理を強制しません。しかし、小さなプロジェクトではうまく機能します。あなたは規律を持たなければなりません。(そして、時間の経過とともに小さなプロジェクトが大きなプロジェクトに成長し、予期せずにそれを行うことを決して忘れないでください。)
プロジェクトを使用する場合は、適切に定義されたパターン (おそらくオブザーバー (GOF パターン)) を実装せずに、ビジネス層プロジェクトが UI 層を使用する依存関係がないことを確認してください。ただし、UI レイヤーはビジネス レイヤーに依存する可能性があり、依存することになります。Maven や Gradle などの優れたツールを使用して、スタンドアロン ビルド プロセス中にこれを強制することもできます。
何をどうするにしても、ビジネスロジックとは何かを考えなければなりません。ブラウザーに Javascript コードを追加したり、Swing GUI や電話アプリにコードを追加して、電話番号がその国で有効な形式であることを確認したりしても、おそらく問題はありません。ただし、同様の方法で、電話番号データベースを直接呼び出して最初の数桁が有効であることを確認するコードをフロントエンドに追加すると、回線をまたいでしまいます。そのような場合、そのロジックは Business セクションにある必要があり、UI 部分はそれを呼び出してその電話番号を確認する必要があります。これは、多くのエッジ ケースで解決するのが常に難しい質問です。