Из которого понятие OO является “Основой b = новый Полученный ()” пример?

Поскольку C: \ по умолчанию монтируется в / mnt / c, это будет работать.

Создайте .bashrc в своем домашнем пути с помощью следующей команды:

    echo "BUILDDIR=/mnt/c/test/build" >> ~/.bashrc;source ~/.bashrc
    cd $BUILDDIR         

    # Do your work below for example ./configure.
    ./configure 
10
задан Raedwald 24 February 2016 в 13:33
поделиться

10 ответов

Реальный ответ: плохо сформированный и, следовательно, бессмысленный вопрос.

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

14
ответ дан 3 December 2019 в 13:12
поделиться

Этот вопрос прост ... Это Полиморфизм .

Полиморфное поведение совершается из-за наследования. Вы можете рассматривать экземпляр Derived как Base, потому что Derived наследуется от Base. Это определение полиморфизма применительно к типам на языке OO ...

http://en.wikipedia.org/wiki/Polymorphism_ (computer_science)

[Update, Update]

Я надеюсь, что это достаточно определенно ... это разные способы сказать одно и то же.

Полиморфизм (Руководство по программированию в C #)

«Через наследование класс может быть используется как более одного типа; может быть используется как собственный тип, любые базовые типы, или любой тип интерфейса, если он реализует интерфейсы. Это называется полиморфизм. "

[Обновление]

Учитывая комментарии, я попытаюсь быть более конкретным ... Я не говорю, что, поскольку Derived наследует от Base, что строка является примером полиморфного поведения, я говорю, что присвоение экземпляра переменной типа, из которого он происходит, является примером полиморфного поведения. Процитирую первое предложение ссылки, которую я прикрепил ...

«В информатике полиморфизм - это особенность языка программирования, позволяет значения различных типов данных быть обработанным, используя униформу interface "

То, что я могу рассматривать экземпляр Derived как экземпляр Base, демонстрирует полиморфное поведение. Это не зависит от наличия виртуальных методов в классе, чтобы быть истинным.

и другая цитата из другой источник ...

"Проще говоря, полиморфизм способность одного типа, А, появляться как и использоваться как другой тип, Б. строго типизированные языки, это обычно означает, что тип А каким-то образом происходит от тип B или тип A реализует интерфейс, представляющий тип B. "

30
ответ дан 3 December 2019 в 13:12
поделиться

Этот фрагмент о Наследовании

Грубая сводка понятий

Абстракция посвящена идее моделирования концепции реального мира в терминах объектов, а не о вызовах функций или других вещах. , Это в основном думать об объектах как об отдельных объектах.

Инкапсуляция - это процесс сокрытия реализации объекта от внешнего мира за четко определенными интерфейсами.

Наследование - это связь между производными классами и базовыми классами и категоризация понятий. Он определяет отношение «is-a» между сущностями, добавляя возможность использования производных классов там, где ожидается база.

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

Агрегация определяет отношение «есть» между двумя понятиями. Означает, что объект состоит из другого объекта.

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

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

Агрегация определяет отношение «есть» между двумя понятиями. Означает, что объект состоит из другого объекта.

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

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

Агрегация определяет отношение «есть» между двумя понятиями. Означает, что объект состоит из другого объекта.

7
ответ дан 3 December 2019 в 13:12
поделиться

Я думаю, что разнообразие ответов демонстрирует, что это плохо продуманный вопрос.

Если бы вы приставили пистолет к моей голове, я бы, вероятно, выбрал наследование , так как это моделирует, так как Derived наследует Base, тогда Derived может использоваться там, где требуется Base (например, на которую указывает Base *), но я мог бы представить защиту любого из ответов.

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

7
ответ дан 3 December 2019 в 13:12
поделиться

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

Наследование больше связано с наследованием членов и / или реализаций членов от родительского к дочернему (то есть от базового к производному, от супер к суб, от абстрактного до конкретного) класса.

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

5
ответ дан 3 December 2019 в 13:12
поделиться

Ответ - полиморфизм.

См. http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming .

Многие из ответов здесь отбрасывают этот ответ, потому что нет вызова виртуальной функции. Но это всего лишь один пример полиморфизма (и самый распространенный). Но это не единственный.

Определение полиморфизма в простейших терминах подытожено в статье в Википедии:

Проще говоря, полиморфизм - это способность одного типа, А, появляться как и использоваться как другой тип, Б. строго типизированные языки, это обычно означает, что тип А каким-то образом происходит от тип B или тип A реализует интерфейс, который представляет тип B.

Конечно, строка 8 является примером объекта , который выглядит как , имеет тип Base , но на самом деле имеет тип Производный

4
ответ дан 3 December 2019 в 13:12
поделиться
  1. Polymorphism

    • no, because we don't make any calls of virtual methods - and don't use polymorphic behaviour on any other manner
  2. Aggregation

    • no, because because Base* b is not member
  3. Encapsulation

    • don't see what we have encapsulated.. except implementation of constructor
  4. Abstraction

    • I think - yes - we will use more abstract class then created
  5. Inheritance

    • relationship between base and derived is inheritance - but you asked about assignment line

EDIT

Abstraction is simplifying complex reality by modelling classes appropriate to the problem, and working at the most appropriate level of inheritance for a given aspect of the problem.

definition from wikipedia - http://en.wikipedia.org/wiki/Object_oriented

3
ответ дан 3 December 2019 в 13:12
поделиться
6. None of the above.  

Это пример ковариации.
http://en.wikipedia.org/wiki/Covariance_and_contravariance_ (computer_science)
См. Также принцип субтитабильности Лискова:
http: //en.wikipedia.org/wiki/Liskov_substitution_principle

3
ответ дан 3 December 2019 в 13:12
поделиться

I think the simple code here is best described as an example of subtyping (http://en.wikipedia.org/wiki/Subtype). In object-oriented programming terminology, polymorphism refers to the ability of subclasses to change or specialize the behaviour defined in the base class (http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming). This example doesn't really show that.

Of the choices listed on brainbench, I guess inheritance makes the most sense simply because its the most vague.

2
ответ дан 3 December 2019 в 13:12
поделиться

You only need a single flag, as you indicated (clean/dirty). Dishwashers generally provide this mechanism already: a (physical) lock.

  • Dishwasher starts empty, unlocked
  • Dishwasher is unlocked, so dirty dishes may be put into it
  • Before running the dishwasher, it is locked
  • After running, it is still locked, indicating everything inside is dirty
  • If you remove something from it, and it's not the last item, you relock it

In a software sense, the lock is only on being able to put dishes into the dishwasher -- you'd know if a dish being removed is clean or dirty based on whether it's locked or not, but can only put a dish in if it's unlocked. If you take the last dish, you unlock it.

--121 --- 3330363--

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

Решение простое. Создайте еще один объект Посудомоечная машина .

Одна Посудомоечная машина удерживает грязную посуду в ожидании ее очистки, другая - недавно очищенную посуду.

Когда Посудомоечная машина держа чистую посуду пустой, начните чистить грязную посуду в другой посудомоечной машине .

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

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

Примечание. Это решение не решает проблему голодания в чашке. Пользовательские потоки могут по-прежнему блокировать ожидание завершения очистки посудомоечной машиной.

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

Это решение не решает проблему голодания. Пользовательские потоки могут по-прежнему блокировать ожидание завершения очистки посудомоечной машиной.

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

Это решение не решает проблему голодания. Пользовательские потоки могут по-прежнему блокировать ожидание завершения очистки посудомоечной машиной.

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

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

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

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

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

--121 --- 3330355--

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

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

Если отдел обеспечения качества определяет цели развития, то Отчетность о разработке в QA может иметь смысл, хотя это, безусловно, будет необычно.

Если QA - это особая практика внутри организации, а не просто часть процесса разработки, то, вероятно, о ней не следует сообщать группе разработчиков, --121 --- 1874679--

DDD - это способ мышления при разработке программного обеспечения, которое начинается с моделирования области. Как сказано на веб-странице :

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

Одна вещь, которая естественным образом следует из этого шаблона проектирования, это многоуровневая архитектура. Как сказано в DDD Pattern Summaries

Разбиение сложной программы на СЛОИ. Разработка дизайна в каждом СЛОЙ, который является связным и зависит только от слоев ниже. Следуйте стандартным архитектурным образцам обеспечить слабую связь с слоями выше. Сконцентрируйте весь код связанных с моделью предметной области в одном слой и изолировать его от пользователя интерфейс, приложение и код инфраструктуры. Домен объекты, свободные от ответственности показ себя, хранение сами, управляющие приложением задачи и т. д. могут быть сосредоточены на выражая модель предметной области. это позволяет модели развиваться, чтобы быть богатым достаточно и достаточно ясно, чтобы захватить необходимые знания бизнеса и положить это сработает.

Нужно ли иметь экранные объекты для этого? Это всего лишь один из способов реализации этого, но, возможно, даже не лучший способ обеспечить слабую связь. Что касается примера: может быть, слой представления - это всего лишь веб-браузер и файлы xlt для визуализации XML-файлов, излучаемых бизнес-уровнем? Если у кого-то есть более подходящие примеры, пожалуйста, добавьте их. Я хочу сказать, что DDD подчеркивает многоуровневую архитектуру, но не ограничивает это одним возможным решением.

--121 --- 2917743--

Я использую iTextSharp для создания динамических PDF-файлов в MVC. Все, что вам нужно сделать, это поместить ваш PDF в объект Stream, а затем ваш ActionResult вернуть FileStreamResult. Я также установил расположение содержимого, чтобы пользователь мог загрузить его.

public FileStreamResult PDFGenerator()
{
    Stream fileStream = GeneratePDF();

    HttpContext.Response.AddHeader("content-disposition", 
    "attachment; filename=form.pdf");

    return new FileStreamResult(fileStream, "application/pdf");
}

У меня также есть код, который позволяет мне брать шаблон PDF, записывать текст и изображения в него и т. Д. (Если вы хотите это сделать).

  • Примечание : вы должны установить позицию потока на 0.
private Stream GeneratePDF()
{
    //create your pdf and put it into the stream... pdf variable below
    //comes from a class I use to write content to PDF files

    MemoryStream ms = new MemoryStream();

    byte[] byteInfo = pdf.Output();
    ms.Write(byteInfo, 0, byteInfo.Length);
    ms.Position = 0;

    return ms;
}
- 121 --- 866986--

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

--121 --- 875792--

Как насчет того, чтобы подойти к нему с другой стороны полностью. У вас уже есть парсер, который полностью понимает все нюансы системы типов C: сам компилятор. Итак, скомпилируйте проект с полной поддержкой отладки и приступайте к отладке данных отладки.

Для системы, основанной на форматах, поддерживаемых binutils , большинство необходимых деталей можно узнать с помощью библиотеки BFD .

Форматы отладки Microsoft поддерживаются (в некоторой степени) по библиотекам и документам в MSDN, но мой Google-фу сегодня слаб, и я не кладу руки на статьи, которые, как я знаю, существуют для ссылки здесь.

Компилятор Keil 8051 (здесь я не использовал их ARM-компилятор ) использует формат Intel OMF или OMF2 и документирует, что символы отладки предназначены для их отладчика или «любых совместимых с Intel эмуляторов». Спецификации для OMF , используемые Keil C51, доступны в Keil , поэтому я мог бы предположить, что аналогичные спецификации доступны и для других их компиляторов.

Быстрое сканирование веб-сайта Keil похоже, что они отказались от своего проприетарного ARM-компилятора в пользу лицензирования ARM-компилятора RealView, который, похоже, использует объекты ELF с отладочной информацией формата DWARF. Dwarf должен поддерживаться BFD и давать вам все, что вам нужно знать, чтобы убедиться, что типы и имена совпадают.

Компилятор RealView, который, похоже, использует объекты ELF с отладочной информацией формата DWARF. Dwarf должен поддерживаться BFD и давать вам все, что вам нужно знать, чтобы убедиться, что типы и имена совпадают.

Компилятор RealView, который, похоже, использует объекты ELF с отладочной информацией формата DWARF. Dwarf должен поддерживаться BFD и давать вам все, что вам нужно знать, чтобы убедиться, что типы и имена совпадают.

--121 --- 3927510--

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

--121 --- 2058062--

Простым решением этого является поддержание инвариантов, которые всегда верны. Примером такого набора инвариантов может быть:

  • Если посудомоечная машина пуста / не полностью заполнена - все блюда грязные
  • Если посудомоечная машина заполнена - тогда все блюда чистые.

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

--121 --- 3330364--

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

Это было.

Шесть месяцев спустя и три драгоценных камня спустя, вот выпущенный product .

Я все еще буду немного над ним работать, но это работает.

--121 --- 4067777--

С Java 7 мы наконец можем сделать это с надежным обнаружением символической ссылки. (Я не считаю, что Apache commons-io в настоящее время имеет надежное обнаружение символических ссылок, поскольку он не обрабатывает ссылки в Windows, созданные с помощью mklink .)

Для ради истории, вот ответ до Java 7, который следует за символическими ссылками.

void delete(File f) throws IOException {
  if (f.isDirectory()) {
    for (File c : f.listFiles())
      delete(c);
  }
  if (!f.delete())
    throw new FileNotFoundException("Failed to delete file: " + f);
}
- 121 --- 522882--

В компании, где я работал около года назад, и которая, на мой взгляд, имела лучшие практики разработки, которые я когда-либо видел, QA и разработка работали бок о бок. Оба работали как равные, но QA несла ответственность за выпуск и поддержку выпущенного кода, например: если обнаружена проблема с кодом в поле, и пара первых уровней поддержки не может ее исправить, она сначала прибудет в QA для фиксируя, --121 --- 1874678--

когда я добавляю свойство padding-left, ширина DIV изменяется на 220px

Да, это в точности соответствует стандартам. Вот как это должно работать.

Допустим, я создаю еще один DIV с именем другой, точно такой же, как и новый, и положить его внутри Ньюдив, но Ньюдив не имеет отступов, а другой отступ слева: 20 пикселей. Я получаю то же самое вещь, ширина newdiv будет 220px;

Нет, ширина newdiv будет 200px.

--121 --- 602739--

Это не какой-либо из предложенных вариантов.

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

Речь не идет непосредственно о наследовании, потому что выделенный код не делайте любое наследование. Линия 2 касается наследования.

Это, конечно, не абстракция, инкапсуляция или агрегация, потому что, ну, это не близко к этим вещам.

Понятие, которое наиболее непосредственно иллюстрирует, - это автоматическое приведение.

-1
ответ дан 3 December 2019 в 13:12
поделиться
Другие вопросы по тегам:

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