CodeGym /Java блог /Случаен /Старо ниво 02
John Squirrels
Ниво
San Francisco

Старо ниво 02

Публикувано в групата

CodeGym – обучение по програмиране на Java

Старо ниво 02 - 1Какво ще кажете за изцяло нов начин за изучаване на програмиране и получаване на образование? Това не прorча на нищо, което сте виждали преди. Какво ще кажете за учене, когато имате цел, средства и резултат? Щастлив съм да ви представя новите онлайн курсове по програмиране за изучаване на Java.

1 Обучението е онлайн игра

Поемате задача, изпълнявате я и получавате награда. Мисля, че е ясно и обичайно за вас. Задачите са най-разнообразни: четене на code, решаване на задачи, видео уроци, коригиране на грешки в codeа, добавяне на нови функции, големи задачи, писане на игри и много други.

2 Само най-необходимото

За да не продължи курсът 5 години, изхвърлих всичко полезно и оставих само най-необходимите неща от него. Анализирах десетки свободни позиции на пазара на труда. Всички теми, които новакът трябва да знае, за да получи работа на Java Junior Developer, са включени в курса.

3 Подходих внимателно към вашето обучение

Пълният курс съдържа 500 мини-лекции и 1200 (!) практически задачи . Задачите са малки, но са много. Има много от тях. Само този минимум, изпълнявайки който, ще получите толкова ценен опит. Има и работа по двойки, различни игри, големи задачи, реални проекти и други видове упражнения.

4 Не можете да завършите играта и да не станете разработчик

Курсът съдържа 40 нива. Можете да преминете към следващото ниво, само ако сте решor по-голямата част от задачите на текущото ниво. Започвайки с малко и лесно, завършвайки с голямо и много полезно. Всеки човек, който стигне до края, ще получи 300-500 часа практически опит. И това дава голям шанс за победа. И да си намеря работа.

5 Целенасочена подготовка за интервю за работа

Последните 10 нива са посветени на писане на автобиография, подготовка за интервю и придобиване на умения за работа в екип. Ще бъдат добавени видеоклипове от интервюта за работа и техния анализ. Е, и, разбира се, типични въпроси за интервю с отговори. Старо ниво 02 - 2

6 Можете да решавате задачи директно на място

Много е удобен и ефективен. След като току-що сте анализирали нова задача в лекцията, ще трябва да направите своя собствена по аналогия точно тук, на сайта. За тези, които искат да изпълнят задачата в IDE, има плъгин, който ви позволява да получите задача с две кликвания и да я предадете за проверка в едно . Лекции, анализи на примери, решаване на задачи директно на уеб сайт, решаване на задачи в IDE - пропастта между теория и практика е толкова тънка, колкото никога досега.

7 Незабавна проверка на задачите (за по-малко от секунда)

Познавате ли ситуация, когато сте предали задача/работа за проверка и трябва да чакате резултати една седмица, защото лицето, което проверява, е заето? Такъв е случаят с повечето офлайн курсове. В CodeGym ще получите резултати от компorрането и проверката на решението на вашата задача за по-малко от секунда, след натискане на бутон «Изпълнение/Проверка».

8 CodeGym го обожава, когато прекарвате време във Facebook по време на обучение

Във Фейсбук има page посветена на проекта. В него можете да намерите интересни технически статии, мотивационни истории, новини от CodeGym и много друга полезна информация.

9 Покритие

В лекциите има много препратки към различни уеб-сайтове, където можете да прочетете обяснения на други лектори. Целта ми е да разберете материала, а не да слушате само мен.

10 Ще ви трябват само вашият мозък и компютър, за да станете разработчик

Ще ви отнеме от 3 до 6 месеца, в зависимост от това колко време практикувате.

11 Поддръжка

Старо ниво 02 - 3Без съмнение ще възникнат въпроси, когато се сблъскате с хиляди задачи. Създадохме специална услуга, където ще можете да задавате въпроси относно задачите. Други студенти на CodeGym, модератори, доброволци и основатели на услугата ще ви отговорят.

12 Общност

Вярваме, че силата е в единството. Затова създадохме Общността, където можете да задавате въпроси; обсъждайте различни теми, споделяйте статии и блогвайте. Освен това общността е идеалното място за намиране на работа по познанство. Затова не се колеbyteе да задавате умни въпроси и да давате умни отговори. Колкото по-активно се държите и помагате на другите, толкова по-големи са шансовете друг член на асоциацията да ви предложи да се присъедините към техния проект.

Достигнахте ново ниво

Ниво 2

Старо ниво 02 - 4

1 Ели, основата на всичко

- Хей, Амиго. Днес искам да ви кажа How е структурирана една типична Java програма . Въпросът е, че всяка Java програма се състои от класове и обекти . - Вече знам Howво са класове. И Howво са обектите? - По аналогия с изграждането на малък кораб, първо трябва да направите чертеж и след това да го дадете на корабостроителницата. Въз основа на този чертеж ще бъде сглобен кораб. Или пет кораба. Всъщност, колкото искате. Десетки еднакви кораби се изграждат въз основа на един чертеж, това е всичко! - Всички неща в програмирането на Java са абсолютно еднакви. - Програмистът е като инженер-конструктор. И ако дизайнерският инженер трябва да прави чертежи, Java програмистът трябва да пише класове. След това се изработват детайли въз основа на чертежите, а обектите се изработват въз основа на класове. - Първо, ние пишем класове (правим чертежи), а по-късно по време на изпълнение на програмата виртуалната машина на Java създава обекти, използвайки тези класове. Точно по същия начин се правят корабите. Има една рисунка и много кораби. Има различни кораби, които имат различни имена и превозват различни товари. Те обаче много си прorчат: всички имат еднаква структура и могат да изпълняват едни и същи задачи. - В случая с корабите всичко е ясно. Дай още няколко сравнения, за да разбера точно за Howво става дума? - Сигурен. Например пчелите… Старо ниво 02 - 5- О, не, чакай малко, пчелите ми напомнят за нещо лошо. Помислете по-добре за мравуняк. - Мравуняк е добър пример за взаимодействие на обекти. В най-простия мравуняк има три класа мравки: царица, войници и мравки работници. Има разлика в броя на мравките за всеки клас. Кралицата е сама в гнездото; има десетки войници и стотици работещи мравки. Така че можем да кажем, че има три класа и стотици обекти. Мравките общуват помежду си, със същите мравки и мравки от други класове по строги правила. - Това е перфектен пример. За една типична програма всичко е същото. Основният обект създава обекти от всички останали класове. Обектите започват да взаимодействат един с друг и с "външния свят" на програмата. Поведението на обектите е твърдо codeирано вътре в тях. - Не разбирам съвсем. По-скоро изобщо не разбирам. - Тези две обяснения са различните страни на една и съща монета. Истината е някъде по средата. Първият пример (този с рисунка и кораби) показва връзката между класа и обектите от този клас. Прorката е много близка. Вторият пример (този с мравуняка) показва връзката между писмени класове и обекти, които съществуват по време на изпълнение. - Искате да кажете, че първо трябва да напишем класове за всички обекти, съществуващи в една програма и нещо повече, да опишем тяхното взаимодействие? - Да, но е по-лесно, отколкото изглежда. В Java всички неща по време на изпълнение на програмата са обекти и когато пишете програмата, трябва да опишете различни начини за взаимодействие на обекта. Обектите просто извикват методи един на друг и им предават необходимите данни. - Не е очевидно, но почти ясно. - Но How знаете Howви методи да извикате и Howви данни трябва да предадете на методите? - Всеки клас има свое описание, за да уточни за Howво е създаден класът. Всеки метод също има свое описание на това Howво прави и Howви данни трябва да му бъдат изпратени. За да използвате класа, трябва да знаете най-общо Howво прави. Освен това трябва да знаете точно Howво прави всеки метод от този клас. Но не е нужно да знаете How се прави . Това е вид магия. - Хъмф. Звучи така.   - Ето, вижте codeа на класа, който копира файл: Старо ниво 02 - 6- Не е толкова лесно, но вече разбирам картината. - Глоба. Ще се видим после алигатор!

2 Риша, Променливи и примитивни типове

- Ей ти, безплатна работна ръка. - Имам предвид „Здравей, Амиго“. Искам да ви запозная с вътрешната структура на променливите. Вече знаете, че всяка променлива има част от паметта, свързана с нея, където променливата съхранява своята стойност. - да Ти го каза миналия път. - Глоба. Хубаво е, че го помниш. Тогава ще продължа. - класове . Когато описваме нов клас в програма, това означава, че декларираме нов сложен съставен тип , чиито данни ще бъдат or други сложни типове, or примитивни типове. Старо ниво 02 - 7- Все още е ясно за чудо. - Тъй като големите (сложни) типове се състоят от много малки (примитивни), техните обекти използват много памет. Повече от обичайните променливи от примитивен тип. Понякога много повече. Присвояването на сложни типове променливи отне много време и изискваше копиране на големи количества памет. Ето защо променливите от сложен тип съхраняват не самия обект, а просто препратка към обект (това е четириbyteов address). Това е достатъчно за достъп до данните на обекта. JVM поема всички трудности, свързани с това. - Не разбирам. - Вече обсъдихме, че променливата е като кутия. За да съхраните 13 в него, можете да напишете числото на лист хартия и да го поставите в кутия. - Сега си представете, че трябва да съхранявате в кутия (променлива) нещо малко по-голямо. Например куче, кола or вашият съсед Джо. За да опростите, можете да направите нещо лесно: поставете снимката на кучето instead of кучето, регистрационния номер на колата instead of колата и телефонния номер на Джо, написан на лист instead of самия Джо. - Сега вземаме лист хартия и написваме телефонния номер на Джо върху него. Това е като препратка към обект. Ако извадим от кутията лист, на който е написан номерът на Джо, направим копия и поставим в няколко кутии, препратките към Джо ще се увеличат, но може да има само един Джо. - Предимството на такова съхранение на данни е, чеможе да има много препратки и само един обект . - Вълнуващо е. Между другото почти разбрах. Отговорете само на още един въпрос: Howво се случва, ако присвоя променлива от сложен тип на друга променлива от сложен тип? - Тогава тези две променливи ще съдържат един и същи address. И следователно, ако промените данните, съхранени в една променлива от сложен тип, данните на другата също ще бъдат променени . Защото знаете , че наистина има само един обект, към който променливите съхраняват препратки. Независимо от това, може да има много променливи, които съхраняват препратки към обекта. - И Howво се съхранява в променливи от сложен тип (тип референция/клас), докато няма препратки към обекти? Може ли наистина да има такова нещо? - Да, Амиго. Взе ми думите от устата. Това може да бъде. Ако няма препратка към обект в променливата на референтния (комплексен) тип, тя съхранява null , специална «нулева препратка». Всъщност той просто съхранява address на обект, equals на 0. Но Java Virtual Machine никога не създава обекти с нулев address, следователно винаги знае, че ако референтната променлива е 0, тогава там няма обект. Старо ниво 02 - 8Правилно ли разбирам? Променливите са разделени на два вида - примитивни и референтни. Променлива от примитивен тип съхранява стойност, докато променлива от референтен тип съхранява препратка към обект. Примитивните типове са int, char, boolean и някои други. Останалите са референтни променливи, те се формират с помощта на класове. - Точно така, момче.

3 Ели, Howви са предметите

Старо ниво 02 - 9- Ето го отново твоя любим учител. Тъй като напредваме бързо, ще ви кажа Howво представляват обектите и How се справяте с тях. - За да създадете Howъвто и да е обект, трябва да напишете името на типа обект (клас) и ключовата дума new преди него. Да кажем, че имаме клас Cat, тогава: Старо ниво 02 - 10- Какво се случва, ако просто създадете обект и не го присвоите [неговата препратка] към никоя променлива? - Ако го направите, Java Virtual Machine ще създаде обекта и веднага ще го обяви за боклук (неизползван обект). След известно време ще изтрие този обект по време на събирането на боклука. - Как мога да унищожа обекта, ако вече не ми трябва? - Не можеш.Веднага щом няма променлива за съхраняване на препратка към обект, обектът ще бъде маркиран като боклук и JVM ще го унищожи по време на следващото събиране на боклук. Докато има поне една препратка към обект, той ще се счита за активен и няма да бъде унищожен. Когато искате бързо да унищожите обекта, задайте всичките му препратки на null, тоест присвоете null стойност на всички променливи, които се отнасят до този обект. - Схванах го. Не изглежда ниHow трудно след предишни лекции. - Добре, тогава ето няколко задачи, за да подобрите уменията си. Те също са на System.out. Но по-късно ще има и по-трудни. И можеш да ни покажеш от Howва стомана си напequals.
Задачи
1 Напишете програма, която показва: «Стъпка по стъпка и нещата са готови».
2 Напишете програма, която показва 7 пъти: «Забавно е да правиш невъзможното.».
3 Напишете програма, която показва: «Винаги искам да науча нещо полезно.».

4 Риша, Видимост на променливите.

- Здравей, моя любима учениче. Сега ще ви разкажа за видимостта на променливите . - Защо, има ли и невидими променливи? - Не, променливите се виждат на места в codeа, където може да се осъществи достъп до тази променлива. Някои променливи могат да бъдат достъпни от всяко място в програмата, други само в рамките на техния клас, а някои променливи могат да бъдат достъпни само в рамките на един метод. - Например, не можете да се обърнете към променливата, преди да е декларирана. - Ясно е. - Ето няколко примера: Старо ниво 02 - 111 Променлива, декларирана в метод, съществува / е видима от началото на декларацията до края на метода. 2 Променлива, декларирана в codeов блок, съществува до края на този codeов блок. 3 Променливи - аргументи на метода - съществуват навсякъде в рамките на обхвата на метода. 4 Променливите на клас / обекти съществуват през целия живот на техния обект. Специалните модификатори за публичен и частен достъп допълнително контролират тяхната видимост. 5 Статични променливи на клас съществуват по време на изпълнение на програмата. Модификаторите на достъп също определят тяхната видимост. - Обичам снимките, всичко си идва на мястото. - Браво на теб, Амиго. Винаги съм знаел, че си умен човек. - Ще ви разкажа и за модификаторите за достъп . Не се страхувайте толкова, това не е ракетна наука. Това са думите публичен и частен , които виждате. - Не ме е страх, просто тук е студено. - Да, разбира се. Можете да контролирате достъпа (видимостта) на методите и променливите във вашия клас от другите класове. За всеки метод or променлива можете да посочите само един модификатор за достъп. 1 Модификатор public Променлива, метод or клас, маркиран с модификатор public, може да бъде достъпен от всяко място в програмата. Това е най-високата степен на откритост, без ограничения. 2 Модификатор private Променлива or метод, маркиран с модификатор private, може да бъде достъпен само от класа, където е деклариран. За всички останали класове, маркиран метод or променлива са невидими, сякаш не съществуват. Това е най-високата степен на затвореност (видима само от същия клас). 3 Модификатор по подразбиране Ако някой модификатор не маркира променлива or метод, той се счита за модификатор по подразбиране. Променливите or методите с този модификатор (т.е. без ниHowъв) са видими за всички класове на пакета, в който са декларирани. Само в същия пакет. Този модификатор понякога се нарича пакет, за да означава, че достъпът до променливи и методи е възможен за целия пакет, чийто клас принадлежи към раздела Обяснение: Старо ниво 02 - 12

5 Диего, Задачи за създаване на куп променливи

- Хей, приятел. Ако е необходимо, пазя копие от договора за вас. Този подъл скъперник Риша е в блажено неведение. Трябваше да видиш сумите в договора ми. хе, хе. - Браво, Диего. Мисля, че ме учиш на наистина полезни неща. - Разбира се, Амиго. Няма печалба без болка. Но все пак някой търпи болката без печалба. - Нека по-добре да обърнем ръката, за да учим. Сега ще ви покажа How да създадете куп променливи по различни начини: Старо ниво 02 - 13- Леле, Диего! толкова си умен - Хе, хе! Благодаря, Амиго. - Мисля, че вече си пропуснал задачите ми. И така, ето някои от тях. Тези хора, извънземните, не знаят нищо за нашия робо живот. Кой освен мен ще те научи на това?
Задачи
1 Напишете програма, която показва 3 пъти: «Много хора са живи само защото е незаконно да ги стреляте.».
2 Напишете програма, която показва: «Ако искам вашето мнение, ще ви помоля да попълните необходимите формуляри.».
3 Напишете програма, която показва 20 пъти: «Никога не съм казвал повечето от нещата, които казах.».

6 Ели, Преминаване по препратка. Референтни променливи

- Хей, Амиго, пак съм аз, Ели. Съжалявам, че винаги го казвам, но това е просто начинът, по който се правят нещата на Земята през 31 век. Ще ви обясня характеристиките на референтните променливи и How да предавате референтни аргументи на функции (методи). - Готов съм. - Добре тогава, референтните променливи са променливи от всички типове, с изключение на примитивните. Тези променливи съдържат само address на обекта (препратка към обект). - Променливите от примитивни типове съхраняват стойност и тип, а променливите на класа съхраняват препратки към обекти от същия клас, добре or нула. Прав ли съм? - Абсолютно. - Е, Howво е справка? - Обектът и референтният му номер са свързани, да кажем, като човек и неговия телефонен номер. Телефонният номер не е мъж, но може да се използва, за да се обадите на човек, за да го помолите за нещо, да го насочите or да му заповядате. Препратка също се използва за взаимодействие с обект. Всички обекти взаимодействат помежду си чрез препратки. - Все едно хората общуват помежду си по телефона? - Това е вярно. Когато присвоите примитивен обект, неговата стойност се копира (дублира). Когато зададете референтна променлива, се копира само addressът на обекта (телефонният номер), а не самият обект. - ОК, разбрах. - Препратката предлага друго предимство: можете да предадете препратка към обект към всеки метод и този метод ще може да модифицира (промени) нашия обект, използвайки своята препратка, като извика неговите методи и получи достъп до данни в обекта. Старо ниво 02 - 14- Стойностите на променливите a и b се разменят вътре в метода за размяна . Когато извикате метода за размяна , променливите a & b получават копия на стойностите m & n . Следователно стойностите на променливите m & n остават същите, когато промените стойностите на a & b . Ясно се вижда в codeа на дясната колона. - Честно казано, нямам нищо от това. Може ли още няколко примера? - В случай на референтен тип можете да направите това: Старо ниво 02 - 15- На променливи a и b се присвояват препратки съответно към emma и alice, стойностите a и b се променят в обектите emma и alice. - Значи е възможно да се декларират класове и в други класове? Еха! - За другото не е ясно. - Не всички по едно и също време.

7 Elly, Извикване на функция, върната стойност

- Добре, тогава да се обърнем. Ще говорим за това How работи извикването на метода и след това опитайте отново да погледнете предишната лекция, става ли? - Сделка! - Е, тогава ще ви разкажа за извикването на функция/метод и върнатите стойности. - Командите са групирани във функции, така че можете да ги изпълнявате в един блок, като една сложна команда. За да направите това, трябва да напишете името на функцията (метода) и след това в скоби след името да посочите стойности и параметри. Старо ниво 02 - 16- В горния пример написахме функция, показваща предадения низ 4 пъти. След това извикахме функция print4 в ред 6. - Когато се стигне до изпълнението на ред 6, програмата ще премине към ред 9 и на променливата s ще бъде присвоена стойност „ Харесва ми да го преместя, преместете го.“ - След това ще бъдат изпълнени редове 11-14 и накрая функцията ще бъде завършена и програмата ще продължи с ред 7. - Разбрах. - Можете не само да предавате аргументи (параметри) на функцията, но и да връщате резултата (стойността) от операцията на функцията. Това става с помощта на ключовата дума return. Ето How изглежда: Старо ниво 02 - 17- Мисля, че го хващам. Това е един и същ code отляво и отдясно. Вляво е просто представено като отделна функция. - Функцията изчислява стойност и я предава на тези, които са я извикали с помощта на командата return. Поне аз мисля така. - По принцип е вярно. - И Howъв е типът празнота? - Някои функции просто правят нещо, но не изчисляват и не връщат ниHowви стойности, като нашия метод main(). За тези функции беше създаден специален тип резултат void (празен тип). - Защо можем просто да не посочим нищо, ако функцията не връща нищо? - Само помислете How се декларира всяка променлива: тип и име. Функцията се декларира с тип, име и скоби. Името на функцията, последвано от скобите, е извикване на функция! - Значи беше по-лесно да се измисли "празен тип", отколкото да се разделят функциите на две категории - тези, които връщат стойност, и тези, които не връщат стойност? - Точно! Ти мислиш бързо, момчето ми. - А How мога да върна празен тип? - Не можеш. Ето How работи: когато JVM изпълни връщанекоманда, тя изчислява стойността на израза отдясно на думата return, съхранява тази стойност в специална област на паметта и незабавно излиза от функцията . Той използва запазената стойност като резултат от извикване на функция на мястото, където е извикана функцията. Можете да го видите в горния пример. - Имате предвид мястото, където int m = min(a,b) се трансформира в m = m2 ? - да След извикването на функцията всичко продължава да работи така, сякаш instead of функцията на същото място е записан нейният резултат. Прочетете това изречение още веднъж и вижте codeа на последния пример. - Само изглежда лесно, но в действителност е трудно. Имам съвсем малко, това е всичко. - Всичко е наред.При първия опит можете да разберете само това, което вече знаете. Колкото повече навлизате в нова област за вас, толкова по-неясна е тя. И резултатът ще бъде още по-страхотен. С течение на времето всичко става ясно. - Е, щом е така, тогава да продължим.

8 Диего

- Хей, Амиго. Ето няколко задачи за вас. Сега можете да направите нещо повече от System.out. Дай всичко от себе си! Вярвам в теб!
Задачи
1 Минимум от две числа
Напишете функция, която връща минимум две числа.
2 Максимум две числа
Напишете функция, която връща максимум две числа.
3 Минимум три числа
Напишете функция, която връща минимум три числа.
4 Минимум четири числа
Напишете функция, която връща минимум четири числа.
Функцията min(a,b,c,d) трябва да използва (извиква) функцията min(a, b)
5 Дублиране на низ
Напишете функция, която показва три пъти предадения низ. Всеки низ трябва да е на нов ред.
6 Показване на текст
Напишете функция, която показва предадения низ (дума) три пъти в един и същи ред.
Думите трябва да са разделени с интервал и не е необходимо да се сливат в една.

9 Диего, пълно име на класа

Старо ниво 02 - 18- Хей, Амиго, искам да ти кажа за пълните имена на класовете. - Вече знаете, че класовете са в пакетите. И така, пълно име на клас е име, което обхваща всички пакети, разделени с точки, и име на клас. Примери: Старо ниво 02 - 19 - За да използвате класа във вашия собствен code, трябва да посочите пълното му име. Можете обаче да използвате кратко име - само име на клас. За да направите това, трябва да „импортирате“ този клас, като посочите името му, като добавите думата import , преди да декларирате клас. Класовете на пакета java.lang (String, Integer,...) се импортират по подразбиране. Не е нужно да ги посочвате. Пример: Старо ниво 02 - 20- Пример за използване на кратки имена: Старо ниво 02 - 21- Разбрах. - Глоба.

10 Професор, Лекция за класове и обекти

Старо ниво 02 - 22- Хей, Амиго. Надявам се, че сте разбрали всичко, което Ели и Риша ви казаха днес. Само за безопасност, Howто обещах, ето връзки към допълнителни материали: 1 Моите бележки 2 Мислене в Java. Тази страхотна книга, за която вече ви разказах. Би било чудесно, ако го прочетете. - Надявам се, че ще намерите време да го прегледате. - Хм. Разбира се, че ще го направя!

11 Хулио

- Хей, Амиго! Надяваме се, че сте за тежка и уморителна почивка?

Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION