ООП злоупотребляют в университетах? [закрытый]

Вот Руководство / Инструкция Apple об изменении строки состояния. Only Dark & ​​amp; свет (в то время как & черный) разрешены в строке состояния.

Вот - Как изменить стиль строки состояния:

Если вы хотите установить стиль строки состояния, уровень приложения затем установите UIViewControllerBasedStatusBarAppearance в NO в вашем `.plist 'файл.

Если вы хотите установить стиль строки состояния, на уровне контроллера представления выполните следующие действия:

  1. Установите UIViewControllerBasedStatusBarAppearance в YES в файле .plist, если вам нужно установить стиль строки состояния только на уровне UIViewController.
  2. В функции добавления viewDidLoad - setNeedsStatusBarAppearanceUpdate

  3. переопределить предпочитаемыйStatusBarStyle в вашем контроллере представления.

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Установите значение .plist в соответствии с уровнем настройки стиля строки состояния. enter image description here


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

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        return true
    }
}


or 
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
    }

}



Вот результат:

enter image description here

34
задан AraK 21 July 2009 в 22:58
поделиться

16 ответов

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

По сути, они должны напугать вас, заставив поверить в то, что когда поезд модели HO сбивает вас, он оторвет вам ногу. Только самые убедительные профессионалы могут это сделать.


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

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

Не упускайте из виду настоящую цель - создание надежного кода. ОО хорошо работает в больших программах, поскольку помогает управлять сложностью. Это также может помочь в повторном использовании.

Но объектно ориентированный объект не является целью. Хороший код - это цель. Если процедурный подход работает и никогда не усложняется, вы выигрываете!

81
ответ дан 27 November 2019 в 15:51
поделиться

Мое мнение, свободно предлагаемое, стоит столько же ...

OOD / OOP - это инструмент. Насколько хорош инструмент, зависит от человека, который его использует, а насколько целесообразно его использовать в конкретном случае, зависит от проблемы. Если я дам вам пилу, вы будете знать, как пилить дерево, но вы не обязательно сможете построить дом.

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

0
ответ дан 27 November 2019 в 15:51
поделиться

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

Если мне нужно серьезно спланировать, я собираюсь использовать ООП. Если нет, то не буду.

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

0
ответ дан 27 November 2019 в 15:51
поделиться

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

ООП - основная парадигма, и ей уделяется большое внимание. Если метапрограммирование станет огромным, ему будет уделяться больше внимания. Java и C # - два наиболее часто используемых языка на данный момент (см. Теги SO по количеству использований). Я считаю неосведомленным утверждать, что ООП - отличная / ужасная парадигма.

Думаю, ваш вопрос лучше всего можно описать старой поговоркой: «Когда молоток - ваш инструмент, все выглядит как гвоздь».

1
ответ дан 27 November 2019 в 15:51
поделиться

Я еще не работал над промышленным проектом, который не сочетал бы функциональность и ООП. Все зависит от ваших требований и от того, какие решения являются лучшими (может быть, самыми дешевыми?) Для них.

1
ответ дан 27 November 2019 в 15:51
поделиться
  1. ООП - не всегда лучший подход. Однако это лучший подход в большинстве приложений.
  2. ООП - лучший подход в любой системе, которая поддается объектам и взаимодействию объектов. Большинство бизнес-приложений лучше всего реализовать объектно-ориентированным способом.
  3. ООП - плохой подход для небольших индивидуальных приложений, где затраты на разработку структуры объектов превышают текущие потребности.

Изучение OOA, OOD & Навыки ООП принесут пользу большинству программистов, поэтому университетам определенно полезно обучать этому.

1
ответ дан 27 November 2019 в 15:51
поделиться

Актуальность и история ООП восходит к языкам Simula еще в 1960-х годах как способу концептуальной разработки программного обеспечения, где разработанный код определяет как структуру исходного кода, так и общие допустимые взаимодействия с Это. Очевидные преимущества заключаются в том, что четко определенный и хорошо созданный объект является самооправданным и постоянно повторяемым, а также надежным; в идеале также может быть расширена и замещена.

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

1
ответ дан 27 November 2019 в 15:51
поделиться

Я видел одни из лучших результатов использования ООП при добавлении новых функций в систему или при обслуживании / улучшении системы. К сожалению, получить такой опыт во время учебы в университете непросто.

1
ответ дан 27 November 2019 в 15:51
поделиться

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

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

ООП полезно --- в сочетании с другими подходами.

Но в конечном итоге каждая программа выполняет 116441], а не о , являющемся . А ООП - это «бытие». О том, что «это машина. У машины 4 колеса. Машина зеленая».

It ' Не интересно моделировать автомобиль в вашем приложении. Интересно моделировать * машину, занимающуюся чем-то. Процессы - это то, что интересно, и, в двух словах, это то, вокруг чего должна быть построена ваша программа. Отдельные классы помогут вам выразить то, что должны делать ваши процессы (если вы хотите поговорить об автомобилях, легче иметь объект автомобиля, чем говорить обо всех отдельных компонентах, из которых он состоит, но это единственная причина, по которой вы вообще хочу говорить о машине из-за того, что с ней происходит. Пользователь управляет ею, или продает, или вы моделируете, что с ней случится, если кто-то ударит ее молотком)

Так что я предпочитаю думайте с точки зрения функций. Конечно, эти функции могут работать с объектами, но это те функции, о которых написана моя программа о . И им не нужно "

4
ответ дан 27 November 2019 в 15:51
поделиться

Как и на большинство вопросов подобного рода, ответ - «зависит от обстоятельств».

Фредерик П. Брукс назвал его лучшим в « Мифическом человеко-месяце » что «не существует единой стратегии, техники или уловки, которые экспоненциально увеличили бы производительность программистов». Вы бы не использовали широкий меч, чтобы сделать хирургический разрез, и вы не использовали бы скальпель в битве на мечах.

У ООП есть удивительные преимущества, но вам нужно хорошо разбираться в схеме, чтобы воспользоваться этим преимущества. Знание и понимание ООП также позволяет вам создать более понятную процедурную реализацию ваших решений из-за лежащих в основе концепций разделения задач.

3
ответ дан 27 November 2019 в 15:51
поделиться

Было бы полезно думать о П ООП как о принципах, а не о программировании. Независимо от того, представляете ли вы каждую концепцию предметной области как объект, все основные принципы объектно-ориентированного программирования (инкапсуляция, абстракция, полиморфизм) чрезвычайно полезны при решении конкретных проблем, особенно когда программное обеспечение становится более сложным. Более важно иметь поддерживаемый код, чем представлять все в «чистой» иерархии объектов.

5
ответ дан 27 November 2019 в 15:51
поделиться
  1. Нет ... ООП - не всегда лучший подход.

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

  3. Хороший вопрос ... но я предполагаю, что научные / аналитические приложения, вероятно, лучший пример. К большинству их проблем лучше всего подойти с помощью функционального программирования, а не объектно-ориентированного программирования.

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

9
ответ дан 27 November 2019 в 15:51
поделиться

Всегда ли ООП - правильный подход?

Нет.

Когда ООП - лучший подход?

Когда это помогает вам.

Когда ООП - плохой подход?

Когда это мешает вам.

Это действительно так специфично. Иногда вам не нужно ООП, иногда оно недоступно на используемом вами языке, иногда это действительно не имеет значения.

Я скажу это, однако, когда дело доходит до техники и передовых практик, продолжает удваиваться проверьте, что говорят вам ваши профессора. То, что они учителя, не означает, что они эксперты.

6
ответ дан 27 November 2019 в 15:51
поделиться

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

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

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

17
ответ дан 27 November 2019 в 15:51
поделиться

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

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

Также в случаях, когда АБСОЛЮТНЫЙ контроль над производительностью имеет решающее значение (когда каждый цикл на счету), подход ООП может привести к затратам, которые могут быть нетривиальными для вычисления.

В реальном мире чаще всего встречается , ваша проблема может быть ОЧЕНЬ хорошо описана в терминах объектов, хотя нельзя забывать закон дырявых абстракций !

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

13
ответ дан 27 November 2019 в 15:51
поделиться

Мои 5 центов:

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

ООП особенно успешно решает несколько классов задач. Это хорошо работает, когда вы можете думать о проблеме с точки зрения «вещей» и взаимодействий между ними. Он работает довольно хорошо, когда вы имеете дело с данными, с пользовательскими интерфейсами или создаете библиотеки общего назначения. Распространенность этих классов приложений способствовала повсеместному распространению ООП. Для других классов проблем требуются другие или дополнительные инструменты. Операционные системы различают пространство ядра и пользователя и частично изолируют процессы, чтобы избежать увеличения сложности. Функциональное программирование сохраняет данные неизменными, чтобы избежать мешанины зависимостей, которые возникают при многопоточности. Как и ваш классический дизайн ООП, но они имеют решающее значение и успешны в своих собственных областях.

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

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

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

11
ответ дан 27 November 2019 в 15:51
поделиться
Другие вопросы по тегам:

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