Member 14483476 Ответов: 3

Что такое абстракция и зачем нам нужна абстракция и где мы используем ее в нашем проекте ?


What is Abstraction and why we need Abstraction and where we use it our project ?


Что я уже пробовал:

please anyone explained it.

F-ES Sitecore

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

3 Ответов

Рейтинг:
2

OriginalGriff

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

Подумайте о реальном мире: яблоки существуют, апельсины существуют - и они оба фрукты, которые также существуют. И вы можете очистить яблоко, вы можете очистить банан - хотя способ, которым вы это делаете, отличается.

Но... вы не идете в магазин и не покупаете "фрукты" - вы покупаете 4 яблока или 6 бананов.

В компьютерных терминах fruit - это абстрактный класс, он не может быть создан; Вы не можете создать Fruit, но вы можете содержать любой класс, производный от Fruit, в переменной Fruit:

public abstract class Fruit
    {
    public Color Colour { get; set; }
    public abstract void Peel();
    }
public class Apple : Fruit
    {
    public override void Peel()
        {
        ...
        }
    }
public class Orange : Fruit
    {
    public override void Peel()
        {
        ...
        }
    }
...
Fruit myFruit = new Apple();
myFruit = new Pomegranate();
myFruit = new Lime();

Фрукт-это abstract класс, Apple-это конкретный класс.
Поскольку Fruit требует, чтобы все производные классы реализовали метод Peel, вы можете вызвать его для любой переменной Fruit, и он вызовет правильный для фактического экземпляра Fruit.
Fruit myFruit = new Apple();
MyFruit.Peel();
myFruit = new Banana();
MyFruit.Peel();
myFruit = new Lime();
MyFruit.Peel();


Рейтинг:
0

CPallini

Представьте себе, если Wikipedia была выделенная страница... Абстракция (информатика) - Википедия[^]


Рейтинг:
0

Gerry Schmitz

Если вы обнаружите, что пишете / копируете много дубликатов кода, это признак "отсутствия абстракции".

"Дубликат" кода является кандидатом на то, чтобы быть "абстрагированным" в класс / модуль, который может быть совместно использован; как служебный класс или базовый / базовый "абстрактный" класс*, который может быть унаследован.

* "Абстрактный" в последнем случае-это просто "модификатор", который говорит, что класс должен быть унаследован и не может быть непосредственно создан.