ソフトウェア開発者になれるでしょうか?
海洋原則では、身体的に適した男性または女性を見つけたら、適切な訓練と教育を提供すれば、その人をユニークな戦士に仕立てることができると述べています。プログラミングは、ギターを弾いたり、水泳や自転車に乗ったりするのと同じスキルです。人は生まれながらにバイカーではありません。私の友人が私の 2 倍働いているのに、収入が 4 分の 1 しかないのを見ると、私は次のような会話を始めます。 — プログラマーとして働きたいですか? 本当に賢いですね。もしかしたら、あなたは単に自分の立場にいないだけなのでしょうか?なぜソフトウェア開発をするのか?
人にプログラミングを教え始める前に、それがその人に何をもたらすのかを調べたほうがよいでしょう。1 シンプルで面白い仕事。
ソフトウェアエンジニアはシンプルで興味深い仕事です。創造性の余地が大いにあります。大好きです。最初は、好きなことをしてお金をもらえると思うと気が狂いました。でも、結局は慣れてしまいました。2 給料がいいですよ。
私は友人が5年間働いて車や家を購入するのを見るのが単純に楽しいです。3 フレキシブルな時間。
厳格な勤務スケジュールは厄介なものだ。ラッシュアワーの渋滞に巻き込まれたことや、5分遅刻して罰金を科されたことのある人なら誰でもそう確信できるだろう。では、午前 11 時に出勤し、午後 5 時に退社できるのはどうでしょうか? ほとんどのプログラマーにとって、これは通常のスケジュールです。ただ仕事をすれば、誰もクロスワードを言わなくなります。ほとんどの会社では在宅勤務も可能です。いつでも雇用主と合理的な合意に達することができます。4 専門的な成長。
ほとんどの企業では、十分な給与を得るには出世のはしごを登る必要があります。ソフトウェア開発者はソフトウェア開発者である必要があります。開発者からマネージャーに資格を再取得したり、指導的な地位に就こうとする必要はありません。あなたがしなければならないのは、プロフェッショナルとして成長することだけです。5 ~ 10 年の経験を持つ開発者にはロイヤルティーが支払われます。5 高い国際流動性。
世界で最も高給取りの職業が 3 つあります。弁護士、医師、ソフトウェア開発者です。海外で働く弁護士にとって、法律や判例法などが異なるため、これは大きな課題です。医師は言語やその他の医療基準を学び、試験に合格しなければなりません。開発者は追加で何も学ぶ必要はありません。同じ言語です。同じ基準です。ほとんどの場合、クライアントであっても同じです。なぜ Java なのか?
以下の 3 つの要因の合計により、私は Java 開発者向けに人材を再教育することになりました。1. Java — 学習するのが最も簡単な言語の 1 つです。
学校を卒業したばかりの人は、基礎知識と学習時間に応じて、3 ~ 6 か月でそれを学ぶことができます。2. 労働市場における高い需要。
未経験でも就職可能です。企業はインターンを熱心に採用し、教育を続けています。3. この分野で最高の給与。
最高のものの 1 つ。これは、若手開発者にとって特に重要です。プログラミングはスキルです
本を読んでもコンピュータープログラマーになることはできません。少なくとも500時間の練習が必要です。まさにボクシングのように。ただ試合を見るだけではプロになれるわけではありません。何年も訓練する必要があります。(そのため、CodeGym には非常に多くの実践的なタスクが含まれています)。10時間でプログラミングを教えるというオファーはすべて、10時間でボクシングを教えるというオファーと同じです。そしてボクシングのリングに放り込んでください!そんなことはしないでください。初心者がフォーラムでソフトウェア開発者になる方法を尋ねると、自分でタスクを考えて実行するように言われることがあります。それはうまくいきません。問題は、人は自分の知識を超えてタスクを作成することはできないということです。あなたは何かを知っているか、知らないかのどちらかです。このテーマに精通した人だけが、あなたに新しいことを教え、解決するのに何週間もかからない一連のタスクセットを作成できるのです。それが私がCodeGymでやったことです。新しい革新的な教育方法
CodeGym の教育は大学教育とは異なる方法で行われます。すぐに気づくでしょう。はるかに効果的です。大学での勉強はおそらく次のようなものでした。長い講義と、学んだことを定着させるための演習です。このアプローチに従うと、スキルではなく知識が向上します。正直に言うと、このようにして習得したスキルにはほとんど価値がありません。別のアプローチがあります。私は、人はまず質問をし、それから初めてそれに対する答えを得るべきだと信じています。質問の前の答えには何の価値もありません。私の講義はあなたの質問に対する答えです。そこでまず、現在の知識では解決するのが難しい実践的なタスクを提示します。これらのタスクは疑問を引き起こし、そしてあなたは知識と講義である私の答えを受け取ります。新しい知識を 3 つの段階に分けて紹介します。-
はじめに(最小限の理論といくつかの実践的なタスク)
-
主要なブロック知識(トピックを完全に理解する必要があります)
-
詳細とニュアンス(ここでギャップを埋めます)
レベル5
1 エリーは授業について話します
- やあ、アミーゴ! - こんにちは、エリー! - 今日はクラスが何であるかを説明したいと思います。-説明 # 1.たとえ話から始めます。私たちの宇宙にあるすべてのものは原子でできています。それらには、水素、酸素、鉄、ウランなど、さまざまな種類があります。原子を組み合わせることで、さまざまなものやオブジェクトを作成できます。- Java の世界にも同じことが当てはまります。ここで、プログラムはさまざまなタイプのオブジェクト (クラスはタイプ) で構成されています: Integer、String、File、Object など。オブジェクトを組み合わせることで、さまざまな Web サービスやプログラムを作成できます。- 原子が異なれば、内部構造も異なります。それらには多数の電子、陽子、中性子が含まれています。- クラス (Java のオブジェクト型) が異なれば、内部構造も異なります。これらには、さまざまな変数とメソッドが含まれています。 - はい、原子の構造については大体理解しています。私はロボットですよね? - プログラム全体を見てみましょう。オブジェクトはプログラムを構成する構成要素のようなものです。クラスはそれらのブロックのタイプです。異なるタイプのブロックは、異なるクラスのオブジェクトです。 - なんとなく分かりました。 -説明 # 2. 新しいタイプのオブジェクトが必要な場合は、新しいクラスを作成します。このクラス内で、オブジェクトの望ましい動作を記述します。 - そうですね、なんとなく理解できましたが、これについてはよくわかりません。 - 内部構造を考慮すると、クラスは何かを行うクラスメソッドと、メソッドが共有データを格納するクラス変数で構成されます。 - 簡単に言えば、クラスはメソッドの集合ですか? - より具体的に言うと、クラスは連携して動作するメソッドと、メソッドが共有する異なる値を格納する変数のグループです。 - うん。新しいクラスを作成するには、これらのメソッドを記述する必要があります… - はい。また、どの変数が異なるメソッドで共有されるかを決定し、メソッドからクラスに変数を取り出します。つまり、メソッド変数をクラス変数に変換します。- クラスは次のパターンで作成されます。 1プログラマは、他にどのようなオブジェクトが必要かを決定します。 2プログラマは、これらのオブジェクトを、その動作に応じてさまざまなタイプに分類します。 3プログラマは、タイプごとに個別のクラスを作成します。 4クラス内で、必要なメソッドと変数を宣言します。 5プログラマが望むことをメソッドで実行するには、各メソッドにコマンドを記述する必要があります。 6クラスの準備ができたので、そのオブジェクトを作成できます。 - 素晴らしい!興味深い仕組みですね。覚えておきますよ。 - 覚えておくと役に立ちます。プログラムをオブジェクトに分割するプログラミング手法は、オブジェクト指向プログラミング( OOP ) と呼ばれます。- Java は OOP アプローチの典型的な例です。Java ではすべてがオブジェクトであるためです。- Java の学習は、2 つの主要なタスクで構成されます。独自のクラスの作成方法の学習と、他の人のクラスの使用方法の学習です。。今日は最も簡単なことから始めます。簡単なクラスの作成方法と、もちろんそのオブジェクトの作成方法を学びます。オブジェクトは、クラスのインスタンスと呼ばれることがよくあります。これらは同義語であり、どちらでも正しいです。 - とった。 - 要約すると、クラスはミニプログラム、つまりデータと、このデータを使って何かを行う関数のセットであると言えます。クラスの重要な機能は、これらのクラス (オブジェクト) のインスタンスを作成できることです。 - クラスオブジェクトを作成するには、コード«new class_name()»を記述する必要があります。 - クラス オブジェクトには 2 つの興味深い機能があります。 - 1 つ目。 各クラス オブジェクトは、クラス変数の独自のコピーを保存します。したがって、変数 x、y がクラスで宣言され、このクラスの 10 個のオブジェクトが作成された場合、各オブジェクトは独自の変数を持つことになります。オブジェクトの変数を変更しても、他のオブジェクトの変数には影響しません。 - 2番目。 新しいオブジェクトが作成されると、さまざまなパラメーターをそれに渡すことができます。これらはいわゆる「スタートアップ値」です。生まれたときに名前を付けるようなものです。多くのオブジェクトは、このようなパラメーターを渡さないと作成できません。 -少し分かりました。クラス変数については何と言いましたか? - すべてのオブジェクトにはデータのコピー (クラス変数) があります。2 Risha がパッケージについて語る
- やあ、アミーゴ! 今回はパッケージについてお話します。- コンピューター内のファイルはフォルダーにグループ化されます。Java のクラス (各クラスは別個のファイル内にあります) は、ディスク上のフォルダーであるパッケージによってグループ化されます。これは何も新しいことではありません。しかし、注意点が2つあります。-まず、«一意の完全なクラス名»は、«パッケージ名» + «クラス名»です。例: - 完全なクラス名は常に一意です。- java.util.ArrayListのような長い名前を毎回 書くのは非常に大変です。したがって、コード内で他のクラスの短縮名を使用できます。しかし、そのためには魔法を使う必要があります。 - 何の魔法? - ステートメント«import java.util.ArrayList;»を使用できます。 - パッケージが宣言された直後のクラスの先頭で、コード内で使用されるArrayListクラスの完全な名前を指定する必要があります。コードで java.util.ArrayList、sun.generic.ArrayList、および com.oracle.ArrayList クラスを使用するとします。インポートでそれらの 1 つ (例: sun.generic.ArrayList;) を指定し、その短縮名を使用できます。1クラスのみとなります。 - なぜこれはとても複雑なのでしょうか? 同じ名前のクラスが存在する可能性がありますか? - はい、異なるパッケージ内に同じ名前のクラスが存在する可能性があります。ただし、同じ名前の 2 つのクラスをクラスにインポートすることはできません。, そのため、そのうちの 1 つにフルネームを適用する必要があります。- ここで別のたとえを紹介します。チームにビルがいますが、誰もがビルを知っているので、コミュニケーションには何の問題もありません。ただし、Bill が 3 つある場合は、それらを区別するために完全な一意の名前を使用する必要があります。-次に、クラスをsrcルート フォルダーではなくパッケージに配置することをお勧めします。クラスの数が少ない場合は問題ありませんが、クラスが多い場合は非常に混乱しやすくなります。したがって、クラスは常にパッケージ内でのみ作成してください。Java のルールは、クラスとパッケージにわかりやすい名前を付けることです。多くの企業はライブラリ (クラス セット) を作成し、混乱を避けるために、これらのクラスのパックに企業/Web サイトの名前を付けています。3 キムショーのビデオチュートリアル
- やあ、アミーゴ! クラスとパッケージの作成方法を説明するビデオ チュートリアルがいくつかあります。4 Elly、オブジェクトの作成、オブジェクト参照
- さて、前回は授業を学びました。今日はオブジェクトの作成方法について説明したいと思います。それはとても簡単です: new というキーワードと、作成したいオブジェクトのクラス名を書きます: - でも、前にも聞いたことがあります。 - わかっていますが、聞いてください。- 新しいオブジェクトを作成するとき、さまざまなパラメータを中括弧で囲んで渡すことができます。今日は後ほど少し説明します。Cat クラスを考えてみましょう。 - これらのゲッターとセッターは何ですか? - Java では、他のクラスから変数にアクセスできないのが一般的です。通常、クラス内で宣言された変数には修飾子privateが付いています。 - プライベート変数へのアクセスを許可するには、2 つのメソッドを作成する必要があります: getそしてセットします。get メソッドの目的は、変数の現在の値を呼び出した人に返すことです。 メソッド セットの目的は、新しい値を設定することです。 - それで、どういう意味ですか? -誰にもオブジェクト変数の値を変更させたくない場合は、メソッドsetを書かないか、メソッドをprivateにします。このメソッドに追加のデータ チェックを追加することもできます。新しく渡された値が無効な場合は、何も変更しないでください。 - それは面白い。 - クラス内には多くの変数が存在する可能性があるため、メソッドの名前は取得および設定されます。通常、操作する変数の名前が含まれます。-変数の名前がfullNameの場合、メソッドの名前はgetFullNameおよびsetFullNameにする必要があります。などと同様に。 - とった!全体的には理解できるアプローチです。 - 新しく作成されたオブジェクトを操作する方法の例をいくつか示します。5 Diego、独自のクラスとオブジェクトを作成するためのタスク
- やあ、アミーゴ! クラスとオブジェクトを作成するためのいくつかのタスクを次に示します。タスク | |
---|---|
1 | Cat クラスを作成する Cat クラスを作成します。猫には名前 (name、String)、年齢 (age、int)、体重 (weight、int)、および強さ (strength、int) が必要です。 |
2 | fight メソッドの実装 booleanfight メソッドの実装(Cat anotherCat): 猫の体重、年齢、体力に応じた戦闘メカニズムを実装します。自分で依存関係を作成します。このメソッドは、現在の cat (fight メソッドが呼び出されたオブジェクト) と anotherCat が戦ったかどうかを判断する必要があります。つまり、現在の cat が勝った場合は true を返し、勝てなかった場合は false を返します。次の条件を満たす必要があります。
|
3 | Dog クラスのゲッターとセッター< クラス Dog を作成します。犬には名前 (文字列名) と年齢 (整数年齢) が必要です。 Dog クラスのすべての変数のゲッターとセッターを作成します。 |
4 | Cat 型のオブジェクトを 3 つ 作成する メソッド main で Cat 型のオブジェクトを 3 つ作成し、データを入力します。 最初のタスクのクラス Cat を使用します。Cat クラスを作成しないでください。 |
5 | 猫同士で 2 人の戦いを 3 回開催する Cat クラスを使用して 3 匹の猫を作成します。 猫同士でペアごとに喧嘩を 3 回行います。 Cat クラスを作成しないでください。戦闘には booleanfight(Cat anotherCat) メソッドを使用します。 各戦闘の結果を表示します。 |
6 Risha がオブジェクトの初期化について語る
- オブジェクトの初期化について説明したいと思います。オブジェクトにアクセスしようとしたときに、適切に動作するために必要なデータがないという状況を避けるために、オブジェクトの作成時に起動データをその変数に割り当てる必要があります。- File タイプのオブジェクトを考えてみましょう。ファイルに最低限必要な情報はファイル名です。名前のないファイルはナンセンスです。 - ファイルを操作するために、独自のバージョンの File クラス (MyFileClass など) を作成しているとします。このクラスの各オブジェクトにはどのような情報が必要ですか? - このオブジェクトが使用するファイルの名前は? - それは正しい。そのため、メソッドinitialize()をクラスに追加します。次のようになります: - メソッドを追加しました。オブジェクトを操作できるようにするために、initialize を実行し、そのメソッドを呼び出します。これは、initialize メソッドが呼び出された直後に実行できます。オブジェクトを操作できない場合は、そのオブジェクトはvalidと呼ばれ、それ以外の場合はvalidと呼ばれます。メソッドinitializeの主な目的は、オブジェクトを有効にするために必要なデータをすべてオブジェクトに渡すことです。 - とった! - では、タスクを複雑にしてみましょう。というか単純化する。見方によっては。このクラスを使用する別のプログラマにとって、完全なファイル名ではなく、ディレクトリと短いファイル名を渡す方が簡単だと想像してください。この機能は、別のメソッドの初期化を使用して実装できます( Java では、同じ名前の複数のメソッドを作成できます))。この場合、クラスは次のようになります。 - さらに、多くの場合、現在のファイルの隣に一時ファイルのコピーを作成する必要があります。 - この場合のメソッドを作成できますか? - もちろん、これを見てください: - では、これらのメソッドは好きなだけ作成できますか? - もちろん、当然のことです。しかし、実際には、好きなだけ。 - そして、initialize メソッドを呼び出す必要があるのはいつですか? - オブジェクトが作成された直後に、それを有効なものに変換するには: - そして、この getFolder() メソッドは何ですか? - その名前から、このメソッドがファイルが置かれているフォルダーの名前を含む文字列を返すことがわかります。ただし、ここではその実装については書きませんでした。これは単に見せるためです。7 Diego、オブジェクト初期化タスク
- やあ、アミーゴ! レッスンがないと退屈です。次に、オブジェクトの初期化タスクをいくつか示します。タスク | |
---|---|
1 | クラス Friend を作成 する 3 つの初期化子 (3 つのメソッド初期化) を使用してクラス Friend を作成します。 - 名前 - 名前、年齢 - 名前、年齢、性別 |
2 | Cat クラスを作成 する 5 つの初期化子を持つ Cat クラスを作成します。 - 名前 - 名前、体重、年齢 - 名前、年齢 (標準体重) - 体重、色、(名前、住所、年齢は不明、野良猫です) - 体重、色、アドレス (他人の家の猫です) イニシャライザのタスクは、オブジェクトを有効にすることです。たとえば、体重が不明な場合は、平均体重を指定する必要があります。猫には年齢と同様に体重がまったくありません。ただし、名前を付けることはできません (null)。同じことがアドレスにも当てはまります。null にすることもできます。 |
3 | Dog クラスを作成する 3 つの初期化子を持つ Dog クラスを作成します。 - 名前 - 名前、高さ - 名前、高さ、色 |
4 | クラス Circle を作成する 3 つの初期化子を持つクラス Circle を作成します: - centerX、centerY、radius - centerX、centerY、radius、width - centerX、centerY、radius、width、color |
5 | クラス Rectangle の作成 クラス Rectangle を作成します。そのデータは上、左、幅、高さになります。可能な限り初期化 (...) メソッドを記述します。 例: - 4 つのパラメーターを設定する必要があります: left、top、width、height - 幅/高さは設定されません (両方とも 0 に等しい) - 高さは設定されません (次と等しい)幅)、正方形を作成します - 別の長方形のコピーを作成します (パラメータで渡されます) |
8 Elly がコンストラクターについて語る
- コンストラクターについてお話しましょう。それは非常に単純です。プログラマはオブジェクトの作成と初期化のための簡略記法を発明しました。 - しかし、私はこれらの初期化子について理解したところです… - 動揺しないでください。もっとよく見なさい。コンストラクターを使用すると、より便利でスペースを節約できます。 - はい、見た目はかなり良くなりました。しかし、疑問があります。クラス内で初期化メソッドを作成する方法は知っていますが、クラス内でコンストラクターを作成するにはどうすればよいでしょうか? - まず、簡単な例を見てみましょう。 - クラス内でコンストラクターを宣言するのは非常に簡単です。コンストラクターは初期化メソッドに似ていますが、次の 2 つの違いがあります。- コンストラクター メソッドの名前は ( initializeではなく)クラス名と同じです。
- コンストラクター メソッドには戻り値の型がありません(型がまったく指定されていません)。
9 ディエゴ、コンストラクターのタスク
-少し休んだんですね。大丈夫。コンストラクター作成タスクのいくつかを次に示します。タスク | |
---|---|
1 | クラス Friend を作成する 3 つのコンストラクターを使用してクラス Friend を作成します: - 名前 - 名前、年齢 - 名前、年齢、性別 |
2 | Cat クラスを作成 する 5 つのコンストラクターで Cat クラスを作成します。 - 名前、 - 名前、体重、年齢 - 名前、年齢 (標準体重) - 体重、色、(名前、住所、年齢は不明。野良猫です) - 体重、色、アドレス (他人の家の猫です) イニシャライザのタスクは、オブジェクトを有効にすることです。たとえば、体重が不明な場合は、平均体重を指定する必要があります。猫には年齢と同様に体重がまったくありません。ただし、名前を付けることはできません (null)。同じことがアドレスにも当てはまります。null にすることもできます。 |
3 | Dog クラスを作成 する 3 つのコンストラクターを持つ Dog クラスを作成します。 - 名前 - 名前、高さ - 名前、高さ、色 |
4 | クラス Circle を作成する 3 つのコンストラクターを使用してクラス Circle を作成します: - centerX、centerY、radius - centerX、centerY、radius、width - centerX、centerY、radius、width、color |
5 | クラス Rectangle の作成 クラス Rectangle を作成します。そのデータは上、左、幅、高さになります。できるだけ多くのコンストラクターを作成します。 例: - 4 つのパラメーターが設定されています: left、top、width、height - width/height は設定されていません (両方とも 0 に等しい) - 高さは設定されていません (width に等しい)、正方形を作成します - 別の四角形のコピーを作成します (パラメーターで渡されます) |
10 教授、クラス、コンストラクター
- またまた私です。私たちの講義は本当に素晴らしいです。退屈な講義へのリンクは提供しません。素晴らしい作品へのリンクはこちらです!- あなたはまだここにいるの?早く行って本を読んでから研究室に行かなければなりません。CodeGym 講義 5 ディスカッション7月11日
- やあ、アミーゴ! 少し疲れました。少し休んでからレッスンを始めましょう。新しいエピソードを見つけました。12 ジョンリス
- こんにちは、兵士さん! - おはようございます! - 素晴らしいニュースがあります。スキルを強化するためのタスクがここにあります。毎日やれば、すぐにスキルが向上します。タスクは、Intellij IDEA で実行するように特別に設計されています。Intellij Idea で実行する追加タスク | |
---|---|
1 | 1. 3 つのクラス 1. アヒルのクラスから類推して、クラス Cat と Dog を作成します。 2. toString メソッドが Cat クラスと Dog クラスで何を返すかを考えます。 3. メソッド main で、各クラスに 2 つのオブジェクトを作成し、それらを表示します。 4. Duck クラスのオブジェクトが作成され、表示されます。 |
2 | 男性と女性 1. クラス Solution 内にパブリック静的クラス Man と Woman を作成します。 2. クラスには、name(String)、age(int)、address(String) のフィールドが必要です。 3. 可能なすべてのパラメータを渡すコンストラクターを作成します。 4. コンストラクターを使用して、すべてのデータを含む各クラスの 2 つのオブジェクトを作成します。 5. [名前 + " " + 年齢 + " " + 住所] の形式でオブジェクトを表示します。 |
3 | 3. パブリック静的クラス Dog および Cat を作成します。 オプションで各クラスに 3 つのフィールドを追加します。 覚えている限り、トムとジェリーの漫画キャラクターのオブジェクトを作成します。 例: マウス jerryMouse = new Mouse(“ジェリー”, 12 (身長, cm), 5 (尻尾の長さ, cm)) |
4 | 4. 現在の日付を表示します。 現在の日付を「21 02 2014」のような形式で画面に表示します。 |
5 | 5. キーボードから数値を読み取り、その合計を計算します。 キーボードから数値を読み取り、ユーザーが「合計」という単語を入力するまで合計を計算します。合計を画面に表示します。 |
ボーナスタスク | |
---|---|
1 | 1. プログラムがコンパイルされず、実行されない。修理する。 タスク:プログラムはキーボードから 2 つの数値を読み取り、その合計を表示する必要があります。 |
2 | 2. プログラムに新しい機能を追加します。 古いタスク:キーボードから 2 つの数値を読み取り、その最小値を表示する新しい関数を追加します。 新しいタスク:キーボードから 5 つの数字を読み取り、その最小値を表示する新しい関数を追加します。 |
3 | 3. アルゴリズムを学び、実践する。タスク : 1. ゼロより大きいコンソール番号 N から読み取ります。 2. 次に、コンソールから N 個の数値を読み取ります 。 3. 入力された N 個の数値の最大値を表示します。 |
GO TO FULL VERSION