Тот момент A-Ha для понимания дизайна OO в [закрытом] C#

(я знаю, что я поздно, но я был тайным бои, которого ты никогда не видел)

Это ключевое слово на большинстве объектно-ориентированных языков программирования, если не все означает, что его ссылку на текущий экземпляр объекта этого класса. Это по сути то же самое, что и вызов этого объекта извне метода по имени. Вероятно, это не имело никакого смысла, так что Ill подробно:

Вне класса, чтобы вызвать что-то внутри этого экземпляра объекта, например, сказать, что у вас есть объект, называемый объектом, и вы хотите получить поле вам нужно будет использовать

object.field

Скажите, например, что вы пытаетесь получить доступ к объекту. изнутри вашего класса, например, ваш конструктор, вы можете использовать

this.field

Это ключевое слово существенно заменяет ключевое слово name объекта при вызове внутри класса. Обычно не так много причин делать это за пределами, если у вас есть две переменные с одним и тем же именем, одна из которых является полем класса, а другая просто является переменной внутри метода, она помогает расшифровать между двумя , Например, если у вас есть это: (Hah, получите это? this ? Хе-хе ... только я? Okay :( Я уйду сейчас)

public String Name;
//Constructor for {object} class
public object(String Name){
    Name = Name;
}

вызовет некоторые проблемы, компилятор не сможет узнать разницу между переменной Name, определенной в параметрах для конструктора, и переменной Name внутри деклараций полей класса, чтобы вместо этого назначить параметр Name ... значение параметра Name, которое ничего не делает ничего полезного и буквально не имеет цели. Это распространенная проблема, которую делают большинство более новых программ, и я тоже был жертвой. В любом случае правильный способ определения этого параметра должен был бы использовать:

public String Name;
//Constructor for {object} class
public object(String Name){
    this.Name = Name;
}

Таким образом, компилятор знает, что переменная Name, которую вы пытаетесь назначить, является частью класса, а не частью метода и назначает его правильно, то есть он присваивает поле Name вы вставляете в конструктор.

Подводя итог, он в основном ссылается на поле экземпляра объекта класса, над которым вы работаете, следовательно, это ключевое слово «это», что означает его этот объект , или этот экземпляр . Его хорошая практика - использовать это при вызове поля своего класса, а не просто использовать имя, чтобы избежать возможных ошибок, которые трудно найти, поскольку компилятор работает прямо над ними.

18
задан 3 revs, 2 users 100% 27 January 2009 в 21:14
поделиться

30 ответов

Приобретение знаний об интерфейсах сделало это для меня. Происходя из среды сценариев и переключения на OO, я не видел, как создание всех этих классов было больше эффективно. Затем я читал Главные Первые Шаблоны разработки , и внезапно я видел почему. Это не самая подробная книга, но это - фантастический первый шаг к объяснению, "почему" из программирования OO, что-то, с чем я боролся очень.

Hope это помогает.

27
ответ дан 30 November 2019 в 05:37
поделиться

Вещь, которая сделала щелчок OO для меня, узнает об основанном на прототипе OO как в Io и Сам . OO C# является совсем другим зверем: не изящный и простой, но волосатый и сложный. Простой не означает менее мощный, наоборот! Я предлагаю изучить простую и изящную систему сначала. Затем Вы видите OO в C#, если Вы смотрите искоса.

Другой момент A-Ha понимал, как система типов может предотвратить вызов неправильных методов на неправильных объектах во время компиляции. Система типов C# не делает этого во всех случаях из-за бросков. Я получил этот момент A-Ha при чтении эти статьи на теория типов из Журнала Объектной технологии.

0
ответ дан 30 November 2019 в 05:37
поделиться

Интерфейсы. я понял основы ООП и наследования, когда я сначала начал использовать, но интерфейсы необоснованно заняли много времени, чтобы я схватил.

В первый раз, когда я слышал об этих вещах, я сразу сказал мне, "с какой стати будет я когда-нибудь потребность создать штуку псевдокласса {мое уменьшительное имя для интерфейсов}, который не имеет никакой реализации? Разве это не смысл наследования, так, чтобы я не перепечатывал ту же логику реализации много раз?"

Так, однажды я сказал мне, "Интересно, как Вы методы записи, которые обобщены через все типы, которые имеют конкретный метод, не имея необходимость жертвовать безопасностью типов". Затем это произошло со мной: это точно, для чего используются интерфейсы! После того как я понял, что, все имело смысл, и самостоятельно я изобрел несколько шаблонов разработки, которые тесно напомнили шаблоны "фабрика" и шаблоны "наблюдатель".

Именно тогда это нажало мной, и я смог думать об ООП на совершенно другом уровне.

0
ответ дан 30 November 2019 в 05:37
поделиться

Hmmm, фабрики и шаблон "одиночка" сделали это для меня. Я все еще испытываю затруднения, хотя, я чувствую, что не использую полные возможности OO, но это всегда - кривая обучения.

вещь, из-за которой я испытываю затруднения, выясняет, какой класс должен сделать то, что, например, объект сотрудника должен иметь метод RaiseSalary, который берет сумму, или объект PayMaster должен иметь метод, который берет Список сотрудников и вычисляет, сколько повысить их плату? Незначительный пример, который я знаю, но это - пример :P

1
ответ дан 30 November 2019 в 05:37
поделиться

Мой момент "a-ha" об ООП прибыл из работы с платформой.NET. Сначала, я раздражался в том, как неуклюжий это должно было записать текст в файл. Затем я понял, что не должен был принимать решение о том, собирался ли мой объект распечатать в файл; я мог просто заставить его использовать TextWriter и позволить любому созданному, который это решает, куда вывод собирался перейти к файлу или к консоли. Затем я понял, как легкий это должно было сделать подкласс TextWriter, который отправил вывод TextBox. И затем я понял, что такие взгляды лежали в основе всего дизайна платформы.

Внезапно (и это было довольно внезапно, как он, произошел за выходные), платформа имела смысл способом, это абсолютно не имело прежде. И я также понял, что это было просто в использовании те же принципы, что разработчики платформы использовали в разработке моих собственных программ.

1
ответ дан 30 November 2019 в 05:37
поделиться

Существует много хороших предложений здесь, хотя только г-н Sampson подсказал, что было бы выгодно найти, что правильные люди отвечают на вопросы. Я не могу рассчитать, сколько раз я наблюдал, что кто-то работает, прервал их для задавания вопроса вроде, "почему Вы делали X ?" и имейте момент a-ha вскоре после этого. Не всегда, но задают достаточному количеству людей достаточно вопросов, и комбинация ума произойдет, и замечательно, когда это делает.

1
ответ дан 30 November 2019 в 05:37
поделиться

Объектно-ориентированное проектирование в целом требует умственного прижимания, но для меня OOD C-типа казался довольно естественным после университета с помощью JAVA, чтобы преподавать нам OOD.

После того, как много практики с проектами хобби, где изящная архитектура требуется, чтобы встречать некоторые варианты использования - ООП, кажется, становится более автоматическим.

1
ответ дан 30 November 2019 в 05:37
поделиться

Следующее не сделало щелчок OO для меня (это уже имело, когда я слышал его), но я действительно находил это очень хорошим описанием ореховой скорлупы.

мой коллега А любит заключение в кавычки оператора от одного из его преподавателей вуза, которые прошли примерно так:

Выписывают сетку со строками, маркированными типами данных и столбцами, маркированными операциями на данных. При разрезании реализации горизонтально Вы делаете объектно-ориентированное программирование. При разрезании его вертикально Вы делаете функциональное программирование.

Попытка, думающая о OO как способ организовать Ваш код, в котором реализация операции на определенном типе данных программиста связывается в определение данных.

1
ответ дан 30 November 2019 в 05:37
поделиться

Первые шаги на любой язык должны быть "Привет Мировым" учебным руководством. Волшебство позади этого метода изучения, также названного обучением на практике, является тем, что это помещает непосредственную необходимость как основной фактор мотивации изучения. Я - самостоятельно разработчик C#.NET, и я в настоящее время изо всех сил пытаюсь изучить F#. Шаги, которые я должен сделать после записи моего HelloWorldApp, устанавливаются небольшие и легкие цели как

Запись консольное приложение, которое загружает некоторую страницу в сети, и отобразите ее содержимое HTML.
Делают это снова, но теперь асинхронно.
Делают это снова, но теперь несколько страниц параллельно.

и т.д.

Это - то, как я изучаю что-то. Для ООП вещи становятся немного более сложными, необходимо прочитать чужой код и статьи также. Одна вещь, которая помогает Вам к ООП обучения и рефакторингу собой, снова использует Ваш собственный код. В моем примере выше, Вы отметите, что код, написанный для загрузки страницы синхронно, очень похож на ту, используемую, чтобы сделать это асинхронно, у них есть даже некоторые строки, которые на 100% равны. Что необходимо сделать, чтобы узнать, что ООП, осуществляют рефакторинг и инкапсулируют код, таким образом, можно выбрать, делает ли тип загрузки Вы хотите (синхронизация или асинхронный) с минимальным повторением в коде, написанном для обеих опций. При использовании TDD (Разработка через тестирование), кривая обучения улучшится.

1
ответ дан 30 November 2019 в 05:37
поделиться

Я думаю единственный способ действительно понять, что любая новая технология должна работать с ним изо дня в день. Несомненно, можно изучить много новых вещей на высоком уровне, не становясь слишком глубокими, но получить это "ах ха" момент, к действительно grok язык и шаблоны, необходимо инвестировать много времени в просто выполнение его .

К сожалению, который означает, Ваша основная строка работы действительно должна программировать в C#. Если Вы просто делаете его тут и там как ряд параллельных проектов, это собирается быть расстраивающим и медленным движением.

Просто мое мнение на основе моего собственного опыта...

1
ответ дан 30 November 2019 в 05:37
поделиться

Ну, это - то, как я вижу Вашу проблему. То, что Вы произошли из SQL, 4GL (язык четвертого поколения), который ближе на естественный язык, чем 3GL, такой как C#, похоже на кого-то, кого использование для управления самолетом doesn’t получает what’s грандиозное предприятие водить автомобиль. Необходимо или попытаться изучить, как ездить на велосипеде (2GL как ассемблер) или попытаться водить низкокачественный автомобиль (такой как Fortan или C) для понимания языка как C#.

2
ответ дан 30 November 2019 в 05:37
поделиться

Эта подстрекательская статья о том, почему методы считывания и методы set злые , бросила вызов, как я думал, что делал ООП. Несколько точек, сделанных в статье, могли бы быть незначительными, но идея "говорит, не спрашивайте, когда возможный" коренным образом изменил, как я думаю о OO, разрабатывают и пишут мой код.

2
ответ дан 30 November 2019 в 05:37
поделиться

Возможно, проблема, с которой Вы сталкиваетесь, состоит в том, что Вы слишком знакомы с SQL. OO и Реляционный является двумя противоречащими понятиями друг с другом. С реляционными инструментами Вы главным образом фокусируетесь на данных и как они представлены. Каждые проблемы задачи программирования, обрабатывающие данные в пути, который выполняет необходимую задачу.

OO, с другой стороны, касается поведения. задача программирования в системе OO касается вызывающий поведения в надлежащих экземплярах, чтобы сделать задачу, и к классам объекта проектирования, которые будут вести себя ожидаемыми способами.

2
ответ дан 30 November 2019 в 05:37
поделиться

как предыдущий упомянутый плакат, действительно проверьте шаблоны разработки.

также, я нашел материал боба дяди полезным как студент, а также преподаватель, в особенности некоторые oo принципы разработки: http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

2
ответ дан 30 November 2019 в 05:37
поделиться

Изучение, что Дженерики в C#, сделало это для меня. Теперь я навсегда думаю в если еще операторы.

2
ответ дан 30 November 2019 в 05:37
поделиться
  1. Вам нужно что-то, что необходимо выполнить.
  2. Садятся и создают его.
  3. при создании его, необходимо будет выяснить вещи, которые Вы не знаете. Это - вероятно, лучший способ определить, каковы те вещи.
  4. , Когда Вы сделаны и имеете что-то работающее Вас взгляд назад над ним и думают о том, что Вы, возможно, сделали по-другому для организации его лучше.
  5. Проводят некоторое исследование о тех определенных вещах и возможных способах приблизиться к нему.
  6. Создают что-то еще и размышляют над этим.
  7. Повторение, пока у Вас нет момента a-ha.

Для меня моему первому моменту a-ha преподавали ассемблер Honeywell в течение моей 3-й недели обучения и наконец понимающей, как компьютер действительно работал.

Мое ООП момент a-ha был во время Оперативного Релейного Лестничного курса Логики, и я решил сделать библиотеку для моделирования Инструментальных аппаратных средств Техаса, против которых мы должны были записать наши программы. Это позволило мне писать/тестировать свои программы для класса, не имея необходимость переходить к школе и использовать реальные аппаратные средства. Это открыло мои глаза для ООП. Я полагаю, что момент a-ha произошел, потому что я смог смоделировать (с кодом) что-то, что было реально.

2
ответ дан 30 November 2019 в 05:37
поделиться

Я могу полностью симпатизировать. У меня есть градусы на английском и Фильме; единственное программирование, которое я сделал перед своими последними двадцатыми, шло Применение] [e, когда мне было 12 лет. Классический ASP был моим первым набегом в Веб-программирование, которое я только изучил, потому что я имел к как технический писатель, работающий над проектом интранет документирование относящегося к недвижимости программного обеспечения.

, Но в конечном счете программирование взял, и я решил начать изучать, как сделать вещи правильно. Переход не был легок. Но я могу сказать, что изучение C# для веб-разработки, особенно если Вы уже не сортируете "grok" OO, может быть пугающим - главным образом, потому что OO так о создании и управлении состоянием и с сохранением информации, и сеть является по сути не сохраняющей состояние.

, Хотите верьте, хотите нет, я узнал больше о OO, пишущий приложения Ajax с JavaScript и приложения Flex в ActionScript - т.е. создав клиенты с сохранением информации - чем я когда-нибудь делал попытку вызвать C# в мой мозг, потому что приложения Ajax и приложения Flex вынуждают Вас думать о вещах с точки зрения состояния. Возврат C#, проведя несколько лет (да, несколько лет) пишущий много кода JavaScript и много кода Flex, и читающий партии и многие из обоих, был на самом деле довольно легок, потому что к тому времени, я понял, как C# должен работать как язык OO.

серия Head First книг является большой, также - люди вид преуменьшает их здесь, потому что они довольно глупы, но они преподают большие понятия, и я был удивлен, как хорошо их уроки остались со мной за эти годы. Попытка заголовок OO. И проведите некоторое время futzing вокруг с JavaScript, также. Возможно, взгляните на Douglas Crockford работа. Это нажмет. Просто дайте ему некоторое время.

2
ответ дан 30 November 2019 в 05:37
поделиться

Вне темы Вы знаете, где Вы получили ту фразу, "момент a-ha": это из книги от кого-то еще, или действительно ли это является исходным? Поскольку я думаю, что помню чье-то использование той же самой фразы, когда я изучал ООП и C++, онлайн приблизительно в 1994.

Так или иначе: Ваш вопрос.

Как Ваш, мой опыт программирования предшествует ООП: Я сделал некоторое Основное программирование также, и, C.

Это было, в некотором смысле, как Вы сказали, "очень линейный подход к кодированию".

я программировал профессионально в C, когда я начал изучать C++. Таким образом с точки зрения способности "сесть, откройте VS2008 и начните кодировать", я отчасти уже делал это каждый день: Я садился и кодировал в C.

Это было событийно-ориентированное программирование: программное обеспечение реагировало на события, для ввода: из сети, из различных устройств, от UI... так таким образом, даже этот код C не был вообще так же линеен как вид обязательного Абсолютного кода ("читает нажатие клавиши, пишут в экран"), что мы использовали бы для записи.

, Таким образом, это - одна вещь: событийно-ориентированное программирование. Событийно-ориентированное программирование не линейно, может быть довольно трудно осмыслять: набор обработчиков событий, некоторого независимого политика, некоторые взаимодействующие с каждым в нефиксированной последовательности. Событийно-ориентированным программированием не является ООП (можно записать событийно-ориентированные программы в C), но одной из вещей, к которым ООП, как известно, способно, являются графический интерфейсы пользователя и событийно-ориентированное программирование. Я предполагаю, что ООП не обязательно помогает: проблема может быть по сути трудной, и ООП помогает, не легкий.

, Таким образом, это - другая вещь: если можно сделать это вообще, то Вы делаете что-то правильно. Не ожидайте, что все всегда будет легко. Хорошее решение могло бы заставить решение выглядеть легким и очевидным, но разработка хорошие решения больших, трудных проблем не легки, и мы могли бы быть благодарны за то, что ООП позволило сделать вообще.

Так или иначе, назад к моей истории: Я кодировал в C. Я учился инкрементно использовать C++, например:

  • у меня есть набор данных (структуры), и набор функций, которые воздействуют на те данные..., поместил функции в те же структуры как данные, на которые они воздействуют, и "функции" становятся "методами"
  • Теперь, когда данные связали методы, которые, как предполагается, действуют на те данные, делают данные частными так, чтобы другие методы не могли коснуться его непосредственно... инкапсуляция и/или сокрытие информации
  • Теперь, когда у меня есть четко определенные классы (некоторые из которых уже содержат друг друга как элементы данных), начните использовать наследование для реализации общих черт и несходств между различными типами

Для меня, один из моментов "a-ha" был то, что мы управляли драйверами для различных видов факса, который у каждого были различные API низкого уровня. Используя ООП мы могли записать...

  • А простой, абстрактный класс, который объявил простой, высокоуровневый API (как, sendFax, receiveFax, cancel, и т.д.), который мы хотели, чтобы все устройства поддерживали
  • Подклассы, которые использовали API определенных аппаратных средств для реализации абстрактного API, наследованного от абстрактного базового класса.

я только что помнил что-то еще. Когда я изучал C++, я прочитал различные книги:

  • Взгляды в C++ , чтобы учиться читать синтаксис C++
  • Эффективный C++ для изучения различных канонических тактических ошибок избежать при записи C++

считавший их, и с практикой приблизительно 6 месяцев я мог использовать C++ в качестве лучшего C.

Одна из следующих книг я читал, хотя был Шаблоны разработки Бандой Четыре: и чтение той книги было моментом "a-ha" для меня, это заставило меня думать, "если те другие книги показали мне , как для записи на языке объектно-ориентированного программирования эта книга показывает мне , почему я хотел бы к".

Так, существует рекомендация: читайте Шаблоны разработки .

, я говорил о C++ и так далее, потому что это было эрой, в которую у меня было свое первое - имеет. Я думаю, что это релевантно... ООП знания и C++ хорошо, мне потребовалась меньше чем неделя, чтобы "сесть, открыть VS2008 и начать кодировать" в C#, когда это пришло.

2
ответ дан 30 November 2019 в 05:37
поделиться

Dunno... Для меня это был Turbo Pascal 6, который представил понятие ООП, но я не вполне получил его тогда. Затем я изучил C++, и все сразу стало совершенно прозрачным. Прибывая из C++, C#, просто кажется действительно простым, таким образом, я не мог действительно сказать, что у меня был момент a-ha с C# или.NET.

я предполагаю, что просто необходимо написать код. Много кода.

2
ответ дан 30 November 2019 в 05:37
поделиться

Попробуйте это: находят большой оператор переключения и осуществляют рефакторинг его в классы . Это было большим 'ага!' момент для меня. Это - классический рефакторинг, иллюстрирует различие между процедурным и дизайном OO, и не трудно работать. Тогда поймите это, если операторы являются маленькими переключателями.

Теперь, пойдите и считайте приблизительно шаблоны разработки . Запишите некоторые классы с помощью них.

Затем, берут некоторый набор классов, которые обеспечивают некоторую функциональность и переписывают ее без операторов возврата и предпочтительно с интерфейсами. Это было другим большим 'ага!' для меня.

На самом деле, хорошая ставка должна провести неделю, читая c2.com .

Hope помогает Вам на Вашей поездке.

3
ответ дан 30 November 2019 в 05:37
поделиться

Я думаю момент a-ha для меня, был, когда я прекратил думать об ООП с точки зрения автомобилей и проектов, и безотносительно других метафор мои учителя пробовали к лому в мой мозг и начали думать об этом с точки зрения его практического применения в реальном коде.

первый объект я записал, в котором я действительно получил его , было немного класса, который создал соединение с базой данных и инкапсулировал набор методов для того, чтобы сделать SQL-запросы. После того, как то ООП точки пошло от чего-то, что учителя говорили о в то, чтобы быть чем-то, что было на самом деле полезно для меня и моего кода.

Так, мой совет был бы, только чтобы сохранить движение, продолжать учиться и, самое главное, запись столько кода, сколько Вы можете. Что заставляет что-то нажать для меня, или для всех остальных, не может заставить его нажать для Вас, таким образом, необходимо подделать собственный путь.

, Поскольку кто-то еще предложил, возможно, отбросьте C# на некоторое время и попробуйте другой язык. Расширьте свои горизонты, возможно, изучите некоторый C++ или имейте путаницу вокруг с Python или Ruby. Вы возвратитесь к C# со свежей перспективой и очистите палитру, и как лучший программист, и возможно вещи станут более активируемыми по щелчку для Вас затем.

3
ответ дан 30 November 2019 в 05:37
поделиться

Я не уверен местонахождение, которое Вы в рамках своей поездки C#, но я, конечно, нашел Главный Первый C# очень хорошее чтение, и используйте мини-проекты там в качестве практики. Как кто-то, кто изучал C# в их свободное время в течение приблизительно полутора лет до чтения книги, это дало мне некоторых мини-'Ага' моменты, например, с делегатами и обратными вызовами.

Предоставленный, некоторые примеры в нем изобретены, во многом как много других книг программирования, но эй, кто не хочет создавать их собственную Space Invaders?!

3
ответ дан 30 November 2019 в 05:37
поделиться

Я помню это чувство. Я был законтрактован для работы над приложением в ASP.NET и C#. Проблема, я не был разработчиком C#, и Работодатель знал это! Но потому что у меня был предыдущий опыт программирования с ними, они поощрили меня давать ему выстрел. Я был разработчиком PHP, ступающим в мир.NET.

первая неделя была печальна. Я не забываю получать сердитое выяснение, почему я не могу только включать ("sideNavigation.php") для получения моей навигации на странице. Вместо этого я должен сделать некоторое управление, добавить его к некоторому другому управлению - это не имело никакого смысла. Но я продолжал читать.

ASP.NET начал завоевывать популярность, и разметка имела большой смысл. Поскольку я изучил аспект разметки, я начал становиться немного более знакомым в коде - позади. Я знал, какие свойства и методы существовали для большего количества вещей, и какие типы значений они приняли.

, Конечно, места как www.learnvisualstudio.net пригодился также с видео учебными руководствами на C# и VB.NET.

Сегодня я - все еще разработчик PHP, но я чувствую себя довольным достаточно.NET, которую я мог возвратить в VS2008 и чинить вокруг, пока я не получаю свое решение (решения).

Все вещи со временем, моим другом. Другая полезная вещь к , находят группу пользователей.NET и регулярно посещают .

3
ответ дан 30 November 2019 в 05:37
поделиться

Моего "щелчка" не произошло непосредственно в отношениях к C#, но было три экземпляра, которым я верю, касаются моей способности легко работать в C#.

1) мне было 8 лет, пытаясь записать на вид простую ассемблерную подпрограмму для очистки графического экрана на Commodore 64. В точке, где я записал бы цикл в Основном, я врезался в стену. Насколько я понял вещи, не было никакого способа записать цикл в ассемблере, который пересечет 256 (однобайтовых) барьеров. Я искал через книги, которые я имел и просто не мог найти решение. (Ответ, конечно, не должен был писать 3-байтовую "строку" кода для каждой группы из 256 строк пикселей.) Несколько дней спустя это просто поразило меня. (Решение состояло в том, чтобы записать два цикла с внешним циклом, на самом деле изменяющим код внутреннего цикла.) Это не что-то, что мы должны сделать с нашими текущими языками, но я мог почти чувствовать свой мозговой рост.

2) Это произошло когда-то, в то время как я был симпатичен молод, также. (Возможно, 10?) Мои уроки игры на фортепиано прогрессировали до точки, где я должен был играть песню с различными ритмами в каждой руке. Я боролся с той песней в течение многих недель (частично, потому что я был склонен избегать необходимой практики). Практика помогла, но не совсем достаточно. Затем однажды, я сел, и это внезапно нажало. После этого песню было почти легко играть.

3) Во время колледжа, и после того, как я программировал для забавы в течение нескольких лет, мой преподаватель предоставил нам присвоение ООП начального уровня. Мы должны были использовать объект, который содержал несколько других объектов. Каждый из них привлек себя на экране. Для выполнения задачи все должно было вращаться на 45 градусов. Почти все студенты (включая меня) получили частичный кредит, потому что мы повернули каждый объект в содержании объекта. Те, кто полный кредит просто, повернули одну вещь: содержание объекта. Я не слышал "щелчок", но этот урок определенно помог мне понять ООП.

Для повреждения собственного барьера Вы могли следовать за предложениями выше. Возможно, найдите простой проект, который Вы ясно понимаете и реализуете его в C#. Или Вы могли взять физический объект, который Вы понимаете довольно хорошо (как автомобиль с рулем, колесами, механизмом, тормозами, и т.д.), и моделируете его с классами в C#. Конечно, можно также достигнуть "щелчка" путем простого выбора одной функции или ключевого слова, цель которого Вы не получаете, и изучение это, пока это не нажимает. Того одного щелчка может быть достаточно для вторжения в C# полностью.

Так или иначе, развлекайтесь! (Забавные вещи всегда легче для Вашего подсознательного ума проанализировать, в то время как Вы не фокусируетесь на нем.)

3
ответ дан 30 November 2019 в 05:37
поделиться

Я соглашаюсь с Jeremy McCollum. Возможно, Вам нужно к , остановка, читая и начинает делать !

хорошо, не делайте действительно остановка, читая , но в какой-то момент, единственный способ стать лучшим программистом состоит в том, чтобы на самом деле работать с инструментом/языком, который Вы пытаетесь изучить.

Мой сценарий много похож на Ваш. В то время как мое дневное задание программист , это не C# или даже .NET. Путем я добрался, монета для отбрасывания должна была на самом деле начать работать над реальным проектом. Это даже не большой проект, но это - реальный проект, где я должен был изучить, как сделать много вещей, которые я никогда не делал (в C#).

Делают точно, что Вы сказали, что не можете: сядьте, откройте VS2008 и начните кодировать. Просто сделайте это!

Подход это как реальное задание, никакой легкий outs! Притворитесь, что Ваша занятость зависит от него. Для меня это на самом деле делает, так как я действительно хочу получить задание C# в какой-то момент в будущем. Если я не могу завершенные проекты, которых никогда не будет происходить.

3
ответ дан 30 November 2019 в 05:37
поделиться
  1. Первый шаг для меня: Понимание ДЛЯ циклов в Turbo Pascal 5. Это навсегда изменило мою жизнь.
  2. 112-секундный Шаг: Поймите, что каждый объект отчасти похож на кнопку (или любое другое управление ui), просто обычно невидимый.

Вы могли бы интересоваться чтением этого:

Ужас Кодирования: Разделение Овец Программирования от Непрограммирования Коз

3
ответ дан 30 November 2019 в 05:37
поделиться

Нет никакого реального совета, который я могу дать Вам, потому что Вы абсолютно правы: это имеет для нажатия. ООП трудно объяснить, таким образом, все получают его, точно так же, как можно быть нелегко понимать сообщения окон, внешние первичные ключи и примерно любую тему, которую стоит упомянуть.

то, Что я предложил бы, - то, что Вы пытаетесь сделать реальный проект самостоятельно. Это не должно быть сложно, но это должно включать несколько классов, таким образом, можно пачкать руки с наследованием и другим сладким материалом ООП.

я не думаю, что любой объем чтения может когда-либо заменять Ваш собственный опыт... Пока это не делает , нажимают , просто притворяются, что Вы играете Один в темноте или что-то...

3
ответ дан 30 November 2019 в 05:37
поделиться

Первый вопрос: сколько часов Вы кодируете в неделю?

Второй Вопрос: кого Вы знаете в реальной жизни, кто ДЕЙСТВИТЕЛЬНО получает ее? Пойдите говорят с ними!!!

...

Объектно-ориентированное программирование является способом запрограммировать, который организует и минимизирует повторение себя. Это делает для меньшего количества кода, и легче изменить код (потому что все находится только на одном месте).

у Вас есть проблемы с ним, таким образом, я могу предположить, что Вы не понимание потребность в наследовании. Наследование является способом уменьшить повторный код. И другая основная часть ООП является классами. Точка классов должна сгруппировать вещи способами, который сохраняет их приятно организованными и также сохраняет их инкапсулировавшими для сокращения связи (таким образом делающий изменяющий легче код!)

Это - в значительной степени все, которое существует также это.

Теперь выходят, и программа наполняют 24/7 и находят любого в реальной жизни, кто действительно понимает этот материал и разговор их ухо прочь.

Удача.

4
ответ дан 30 November 2019 в 05:37
поделиться

Напишите код. Многое из него. Плохой код, хороший код, бесполезный код - это не имеет значения. Просто запишите это. Когда Вы сыты написанием кода по горло (и если Вы не устаете от него иногда, Вы не пишете достаточно), блоги чтения, журналы и книги о коде.

Затем возвратитесь и посмотрите на часть своего ранее написанного кода. Осуществите рефакторинг его, очистите его и измените дизайн. Добавьте опции, исправьте ошибки, независимо от того, что - не имеет значения. Удалите свой существующий код и напишите больше кода.

В какой-то момент, Вы начнете думать в C# - точно так же, как Вы делаете в SQL.

Примечание, которое это подобно изучению иностранного языка путем погружения самостоятельно в него. Несомненно, можно изучить его в школе, прочитать книгу и слушать ленты. Но, нет никакого лучшего способа выучить иностранный язык, чем перемещению, где оно говорило каждый день.

13
ответ дан 30 November 2019 в 05:37
поделиться

Большинство плакатов на ТАК не исключительно умно. Существует пара вещей, которые могут скосить Вас, чтобы думать, что это имеет место. Во-первых, только люди, которые, оказывается, знают или думают, что знают ответ, потрудятся отвечать. Во-вторых, неправильные/плохие вопросы и ответы не видимы. В-третьих, естественно, что коллективное знание будет намного больше, чем отдельное знание.

вещью, которую Вы принимаете за аналитику, является время, проведенное на арене. Чем больше времени и усилия Вы посвящаете к изучению, тем лучше и более хорошо осведомленный Вы станете. Из того, что Вы говорите, Вы не приближаетесь к вещам оптимальным способом. Поймите, что определенный язык просто предоставляет правила синтаксиса и грамматики. Ключ к становлению хорошим разработчиком должен быть хорошим мыслителем. Не фокусируйтесь или становитесь одержимыми языком.

Craig Larman и Bruce Eckols и книги Head Start являются великим, подходящим для этой модели изучения. Однако я действительно должен предупредить Вас, что чтение книг и выполнение упражнений недостаточно. Необходимо погрузить себя в обсуждение и обратную связь с другими разработчиками (если, конечно, Вы не будете исключительно умным человеком - в этом случае Вы просто получите его...).

Вы продемонстрировали черту, которая более важна, чем аналитика. У Вас есть смирение. Если у Вас будут смирение и настойчивость, то Вы будете намного более эффективными и хорошо осведомленными, чем подавляющее большинство плакатов на ТАК.

Смирение также важно, потому что оно поможет Вам справиться с тем, что, неважно, как трудно Вы работаете и сколько Вы изучаете, Вы никогда не будете знать больше, чем Jon Skeet.

25
ответ дан 30 November 2019 в 05:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: