Классы, перечисления(enum) и конструкторы

Рейтинг: -1Ответов: 1Опубликовано: 28.04.2015

Начал изучать C++ и понял, что не могу разобраться с отличиями классов, перечислений (enum) и конструкторов друг от друга, хоть и прочитал много статей по этим темам.

Для чего и как их стоит применять? Можете ли привести хотя бы небольшие практические примеры? Очень хочется разобраться.

Ответы

▲ 4

Ты спрашиваешь только про верхушку айсберга.

enum - это пользовательский тип данных, и это не список. Я полагаю тебе уже знакомо что такое тип данных. Так вот у всех типов данных есть перечень значений: у int - цифры, у char - символы и т.д. enum (перечисление) позволит тебе создать тип данных со своими значениями.

enum color { RED, GREEN, BLUE };

тут создан тип color который может принимать значения RED, GREEN, BLUE, как int может принимать 1,2,3...

Список - это грубо говоря то же самое, что массив.

Класс - это шаблон для создания объекта.

    public class Dog{
       String breed;
       int age;
       String color;

       void barking(){
           //code here
       }

       void hungry(){
           //code here
       }

       void sleeping(){
           //code here
       }
    }

Мы создали класс Dog, у которого есть поля, которые будут характеризовать в будущем объект (порода, возраст и цвет) и функции которые объект сможет выполнять. Теперь создадим наш Объект:

    Dog fluffy = new Dog();

теперь у нас есть собака fluffy. Ей можно указать породу, возраст, цвет:

    fluffy.breed = "ovcharka";
    fluffy.age = 10;
    fluffy.color = "searij";

fluffy может выполнить функции, которые есть в ее классе

    fluffy.barking();
    fluffy.hungry();
    fluffy.sleeping();

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

    public class Dog{
       public Dog(String breed, int age) { //это контсруктор
           this.breed = breed;
           this.age = age;
           this.color = "grey";
       }
       String breed;
       int age;
       String color;
    }

Создаем объект

     Dog fluffy = new Dog("ovcharka",10);

У нас теперь есть объект fluffy с такими же значениями как в примере без конструктора.

Что такое this - это ссылка на объект из вне. То есть строчка this.breed = breed; говорит что я хочу присвоить полю объекта, который сейчас использую переменную из функции-конструктора. это равносильно fluffy.breed = breed; в случае этого объекта.

Как я уже сказал это всего лишь верхушка и многое еще предстоит узнать. Удачи!