Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для CFYZ
11 / 11 / 4
Регистрация: 21.11.2009
Сообщений: 187

Констуркторы, деструкторы....

03.05.2011, 18:26. Показов 1127. Ответов 7
Метки нет (Все метки)

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

Динамическая структура – очередь. Хранит библиотечные данные: автора книги (строка) и название книги (строка). Предусмотреть функции добавления элементов в очередь и удаления из нее, а также функцию поиска всех произведений введенного автора.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.05.2011, 18:26
Ответы с готовыми решениями:

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

Деструкторы
Не совсем понятно, по какой все таки причине разработчики C++ отказались от возможности иметь деструкторы с аргументами, то есть передавать...

Деструкторы
Вообщем сразу к сути. В нижеприведенном примере вызывается 2 деструктора. Я никак не пойму, почему именно два? вот сам метод: ...

7
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
03.05.2011, 22:42
И что не получается?
0
 Аватар для CFYZ
11 / 11 / 4
Регистрация: 21.11.2009
Сообщений: 187
03.05.2011, 23:45  [ТС]
Мне не понятно как правильно все это описать, вот есть программа, она работает, но препод сказал, что она написано не корректно. Подправьте если не сложно, что бы это выглядело более профессионально.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#include <iostream.h>
#include <conio.h>
#include <string.h>
 
class book
{
    struct ListElement
   {
      string avtor,name;
      ListElement* Next;
   };
   ListElement *First;
   ListElement *Last;
   ListElement *Current;
   public:
     book();
    ~book();
     book(const book & thebook){
     Current=First;
     while (Current){
     Current->avtor=thebook.Current->avtor;
     Current->name=thebook.Current->name;
     Current=Current->Next;
     }
     };
     void dob();
     int udal();
     void poisk(string value);
     void show();
};
 
 
book::book():
First(NULL),Last(NULL),Current(NULL)
{}
 
book::~book()
{
  while(First)
   {
      Current=First;
      First=Current->Next;
      delete Current;
   }
}
 
int book::udal()
{
   clrscr();
   Current=First;
   if (Current)
   {
      First=Current->Next;
      delete Current;
      return 1;
   }
   else
   {
      return 0;
   }
}
 
void book::dob()
{
   clrscr();
   string a,b;
   int j,i;
   cout<<"Vvedite kol-vo elementov ocheredi"<<endl;
   cin>>j;
   for (i=0;i<j;i++){
   if(!First)
   {
      if(!(Last= new ListElement))
      {
         cerr<<"Insufficient memory for element"<<endl;
         return;
      }
      cout<<"Vvedite avtora"<<endl;
      cin>>a;
      cout<<"Vvedite nazvanie knigi"<<endl;
      cin>>b;
      Last->avtor=a;
      Last->name=b;
      First=Last;
      Last->Next=NULL;
   }
   else
   {
      if(!(Current= new ListElement))
      {
         cerr<<"Insufficient memory for element"<<endl;
         return;
      }
      cout<<"Vvedite avtora"<<endl;
      cin>>a;
      cout<<"Vvedite nazvanie knigi"<<endl;
      cin>>b;
      Current->avtor=a;
      Current->name=b;
      Last->Next=Current;
      Last=Current;
      Last->Next=NULL;
   }
  }
 return;
}
 
void book::show()
{
   clrscr();
   Current=First;
   while(Current)
   {
      cout<<Current->avtor<<" ";
      cout<<Current->name<<endl;
      Current=Current->Next;
   }
   getch();
   return;
}
 
void book::poisk(string value)
{
   clrscr();
   string l;
   Current=First;
   int i=0;
   while(Current)
   {
      if (Current->avtor==value)
      {
         cout<<value<<":";
         l=Current->name;
         cout<<l<<endl;
         i++;
      }
      Current=Current->Next;
   }
   if (i==0)
   cout<<"proizvedenii c takim nazvaniem net"<<endl;
   getch();
   return;
}
 
void main(){
char c;
string val;
book BOOK;
while(1){
  clrscr();
  cout<<"1-Dobavlenie"<<endl;
  cout<<"2-Udalenie"<<endl;
  cout<<"3-Pokazat spisok"<<endl;
  cout<<"4-Poisk"<<endl;
  cout<<"5-Exit"<<endl;
  c=cin.get();
 
  switch(c){
  case'1':BOOK.dob();break;
  case'2':BOOK.udal();break;
  case'3':BOOK.show();break;
  case'4':{
       cout<<"Vvedite element poiska"<<endl;
       cin>>val;
       BOOK.poisk(val); break;}
  case'5':exit(0);
  }
 }
}
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
04.05.2011, 23:14
You're not going tolike it.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include <iostream>
#include <cstring>
 
class Book {
 public:
  class IsAuthor {
   public:
    IsAuthor(const char *value)
      : value_(strcpy(new char[strlen(value) + 1], value)){}
    ~IsAuthor() { delete value_; }
    bool operator()(const Book &book) {
      return strcmp(book.Author(), value_) == 0;
    }
   private:
    char *value_;
  };
  Book() : author_(NULL), name_(NULL) {}
  Book(const char *author, const char *name)
    : author_(strcpy(new char[strlen(author) + 1], author)),
      name_(strcpy(new char[strlen(name) + 1], name)) {}
  Book(const Book &other)
    : author_(strcpy(new char[strlen(other.Author()) + 1], other.Author())),
      name_(strcpy(new char[strlen(other.Name()) + 1], other.Name())) {}
  ~Book() {
    delete [] author_;
    delete [] name_;
  }
  char *Name() const { return name_; }
  char *Author() const { return author_; }
  void Name(const char *value) {
    delete [] name_;
    name_ = strcpy(new char[strlen(value) + 1], value);
  }
  void Author(const char *value) {
    delete [] author_;
    author_ = strcpy(new char[strlen(value) + 1], value);
  }
  Book &operator=(const Book &other) {
    if (&other != this) {
      Name(other.Name());
      Author(other.Author());
    }
    return *this;
  }
  friend std::ostream &operator<<(std::ostream &stream, const Book &book) {
    return stream << "Author: " << book.Author() << std::endl
                  << "Name: " << book.Name() << std::endl;
  }
 private:
  char *author_;
  char *name_;
};
 
template <class ValueType>
class Queue {
 public:
  struct ListItem {
    ValueType data;
    ListItem *next;
    ListItem() : data(), next(NULL) {}
    ListItem(const ValueType &value) : data(value), next(NULL) {}
  };
  Queue() : begin_(NULL), end_(NULL), size_(0) {}
  Queue(const Queue &other) : begin_(NULL), end_(NULL), size_(0) {
    ListItem *item = other.begin_;
    while (item != NULL) {
      PushBack(item->data);
      item = item->next;
    }
  }
  ~Queue() {
    Clear();
  }
  size_t Size() const { return size_; }
  void PushBack(const ValueType &value) {
    ListItem *new_item = new ListItem(value);
    if (begin_ == NULL) {
      begin_ = end_ = new_item;
    } else {
      end_->next = new_item;
      end_ = new_item;
    }
    ++size_;
  }
  ValueType PopBack() {
    ValueType result = end_->data;
    if (begin_ == end_) {
      delete end_;
      begin_ = end_ = NULL;
    } else {
      ListItem *pre_last = begin_;
      while (pre_last->next != end_)
        pre_last = pre_last->next;
      pre_last->next = NULL;
      delete end_;
      end_ = pre_last;
    }
    --size_;
    return result;
  }
  ValueType &Begin() { return begin_->data; }
  ValueType &End() { return end_->data; }
  void Clear() {
    if (begin_ != NULL)
    while (begin_->next != NULL) {
      ListItem *tmp = begin_->next;
      delete begin_;
      begin_ = tmp;
    }
    begin_ = end_ = NULL;
    size_ = 0;
  }
  template <class Predicate>
  void CopyIf(Queue &destination, Predicate predicate) {
    ListItem *item = begin_;
    while (item != NULL) {
      if (predicate(item->data))
        destination.PushBack(item->data);
      item = item->next;
    }
  }
  friend std::ostream &operator<<(std::ostream &stream, const Queue &list) {
    ListItem *item = list.begin_;
    while (item != NULL) {
      stream << item->data << std::endl;
      item = item->next;
    }
    return stream;
  }
 private:
  ListItem *begin_;
  ListItem *end_;
  size_t size_;
};
 
int main(int argc, char *argv[]) {
  Queue<Book> queue;
  
  queue.PushBack(Book("Prattchet", "Colour of Sky, The"));
  queue.PushBack(Book("Melville", "Moby-****"));
  queue.PushBack(Book("Prattchet", "Wizzard"));
 
  Queue<Book> copied(queue), authored;
  queue.CopyIf(authored, Book::IsAuthor("Prattchet"));
 
  std::cout << "* All:" << std::endl << queue;
  std::cout << "* Copy:" << std::endl << copied;
  
  std::cout << "* Last book: " << copied.PopBack() << std::endl;
 
  copied.Begin().Author("Terry Prattchet");
  copied.End().Author("Herman Melville");
  std::cout << "* Modified copy:" << std::endl << copied;
  
  std::cout << "* Only prattchet:" << std::endl << authored;
  return 0;
}
2
 Аватар для CFYZ
11 / 11 / 4
Регистрация: 21.11.2009
Сообщений: 187
31.05.2011, 13:22  [ТС]
Для этого класса описать конструкторы (в том числе и конструктор копирования), деструктор, функцию печати данных. Создать экземпляр полученного класса и проиллюстрировать его корректную работу: распечатать данные, изменить данные и распечатать вновь. Создать второй экземпляр класса как копию первого и проиллюстрировать корректную работу конструктора копирования: распечатать и изменить данные объекта-копии, распечатать данные обоих объектов, сравнить результат. Предусмотреть ошибки.


Помогите реализовать в моей программе выделенный КРАСНЫМ фрагмент задания.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#include <iostream.h>
#include <conio.h>
#include <string.h>
 
class book
{
    struct ListElement
   {
      string avtor,name;
      ListElement* Next;
   };
   ListElement *First;
   ListElement *Last;
   ListElement *Current;
   public:
     book();
    ~book();
     book(const book & thebook){
     Current=First;
     while (Current){
     Current->avtor=thebook.Current->avtor;
     Current->name=thebook.Current->name;
     Current=Current->Next;
     }
     };
     void dob();
     int udal();
     void poisk(string value);
     void show();
};
 
 
book::book():
First(NULL),Last(NULL),Current(NULL)
{}
 
book::~book()
{
  while(First)
   {
      Current=First;
      First=Current->Next;
      delete Current;
   }
}
 
int book::udal()
{
   clrscr();
   Current=First;
   if (Current)
   {
      First=Current->Next;
      delete Current;
      return 1;
   }
   else
   {
      return 0;
   }
}
 
void book::dob()
{
   clrscr();
   string a,b;
   int j,i;
   cout<<"Vvedite kol-vo elementov ocheredi"<<endl;
   cin>>j;
   for (i=0;i<j;i++){
   if(!First)
   {
      if(!(Last= new ListElement))
      {
         cerr<<"Insufficient memory for element"<<endl;
         return;
      }
      cout<<"Vvedite avtora"<<endl;
      cin>>a;
      cout<<"Vvedite nazvanie knigi"<<endl;
      cin>>b;
      Last->avtor=a;
      Last->name=b;
      First=Last;
      Last->Next=NULL;
   }
   else
   {
      if(!(Current= new ListElement))
      {
         cerr<<"Insufficient memory for element"<<endl;
         return;
      }
      cout<<"Vvedite avtora"<<endl;
      cin>>a;
      cout<<"Vvedite nazvanie knigi"<<endl;
      cin>>b;
      Current->avtor=a;
      Current->name=b;
      Last->Next=Current;
      Last=Current;
      Last->Next=NULL;
   }
  }
 return;
}
 
void book::show()
{
   clrscr();
   Current=First;
   while(Current)
   {
      cout<<Current->avtor<<" ";
      cout<<Current->name<<endl;
      Current=Current->Next;
   }
   getch();
   return;
}
 
void book::poisk(string value)
{
   clrscr();
   string l;
   Current=First;
   int i=0;
   while(Current)
   {
      if (Current->avtor==value)
      {
         cout<<value<<":";
         l=Current->name;
         cout<<l<<endl;
         i++;
      }
      Current=Current->Next;
   }
   if (i==0)
   cout<<"proizvedenii c takim nazvaniem net"<<endl;
   getch();
   return;
}
 
void main(){
char c;
string val;
book BOOK;
while(1){
  clrscr();
  cout<<"1-Dobavlenie"<<endl;
  cout<<"2-Udalenie"<<endl;
  cout<<"3-Pokazat spisok"<<endl;
  cout<<"4-Poisk"<<endl;
  cout<<"5-Exit"<<endl;
  c=cin.get();
 
  switch(c){
  case'1':BOOK.dob();break;
  case'2':BOOK.udal();break;
  case'3':BOOK.show();break;
  case'4':{
       cout<<"Vvedite element poiska"<<endl;
       cin>>val;
       BOOK.poisk(val); break;}
  case'5':exit(0);
  }
 }
}
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
01.06.2011, 09:35
Боюсь, что вышеприведенный код содержит огромное количество ошибок и неработоспособен. Попробуйте воспользоваться фрагментами приведенного мною кода.
1
 Аватар для CFYZ
11 / 11 / 4
Регистрация: 21.11.2009
Сообщений: 187
06.06.2011, 21:36  [ТС]
Цитата Сообщение от lemegeton Посмотреть сообщение
Боюсь, что вышеприведенный код содержит огромное количество ошибок и неработоспособен. Попробуйте воспользоваться фрагментами приведенного мною кода.

К сожалению, я еще не так хорошо C++ и поэтому не смог разобраться в Вашем коде.
Возможно Вы могли бы его упростить, до минимального уровня, что бы он был похож на мой код?
Заранее благодарен.
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
07.06.2011, 00:53
Проще не выйдет, но можно сделать примитивней.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <string>
 
struct Book {
  std::string author;
  std::string name;
  Book() : author(""), name("") {}
  Book(const std::string &author_, const std::string name_)
    : author(author_), name(name_) {}
};
 
class SimpleQueue {
 public:
  SimpleQueue() { base_.next = base_.prev = &base_; }
  SimpleQueue(const SimpleQueue  &other) {
    base_.next = base_.prev = &base_;
    NodeBase *node = other.base_.next;
    while (node != &(other.base_)) {
      PushBack(static_cast<Node*>(node)->value);
      node = node->next;
    }
  }
  ~SimpleQueue() { Clear(); }
  void PopFront() {
    // тут надо предусмотреть, что список не пуст
    Node *node = static_cast<Node*>(base_.next);
    node->prev->next = node->next;
    node->next->prev = node->prev;
    delete node;
  }
  Book &Front() const {
    // тут надо предусмотреть, что список не пуст
    return static_cast<Node*>(base_.prev)->value;
  }
  void PushBack(const Book &value) {
    Node *node = new Node;
    node->value = value;
    node->next = &base_;
    node->prev = base_.prev;
    node->next->prev = node->prev->next = node;
  }
  bool Empty() {
    return (base_.next == &base_) && (base_.prev == &base_);
  }
  void Clear() {
    while (!Empty())
      PopFront();
  }
  void Print() {
    for (NodeBase *node = base_.next; node != &base_; node = node->next)
      std::cout << "Author: "<< static_cast<Node*>(node)->value.author
                << std::endl
                << "Name: " << static_cast<Node*>(node)->value.name
                << std::endl << "-----" << std::endl;
  }
  SimpleQueue AuthoredBy(const std::string &author) {
    SimpleQueue result;
    for (NodeBase *node = base_.next; node != &base_; node = node->next)
      if (static_cast<Node*>(node)->value.author == author)
        result.PushBack(static_cast<Node*>(node)->value);
    return result;
  }
 private:
  struct NodeBase {
    NodeBase *next;
    NodeBase *prev;
  };
  struct Node: public NodeBase {
    Book value;
  };
  NodeBase base_;
};
 
int main(int argc, char *argv[]) {
  SimpleQueue queue;
 
  queue.PushBack(Book("Prattchet", "Colour of Sky, The"));
  queue.PushBack(Book("Melville", "Moby-****"));
  queue.PushBack(Book("Prattchet", "Wizzard"));
 
  SimpleQueue copy(queue);
  queue.PopFront();
  
  std::cout << std::endl << "Queue:" << std::endl << std::endl;
  queue.Print();
 
  std::cout << std::endl << "Copy:" << std::endl << std::endl;
  copy.Print();
 
  std::cout << std::endl << "Authored by Prattchet:" << std::endl << std::endl;
  copy.AuthoredBy("Prattchet").Print();
  return 0;
}
Добавлено через 5 минут
Цитата Сообщение от CFYZ Посмотреть сообщение
Возможно Вы могли бы его упростить, до минимального уровня, что бы он был похож на мой код?
К сожалению, до минимального уровня не могу. По меньшей мере не могу использовать односимвольные или не говорящие идентификаторы -- путаюсь. Ну и общая стилистика уже как-то устоялась. Но вы можете всё это легко исправить с помощью инструмента замены в вашем любимом текстовом редакторе.

Не по теме:

Цитата Сообщение от CFYZ Посмотреть сообщение
Подправьте если не сложно, что бы это выглядело более профессионально.
Цитата Сообщение от CFYZ Посмотреть сообщение
Возможно Вы могли бы его упростить, до минимального уровня, что бы он был похож на мой код?
Вам шашечки или ехать?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.06.2011, 00:53
Помогаю со студенческими работами здесь

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

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

Конструкторы и деструкторы
Привет. Есть структура, содержащая 7 полей, в которые я ввожу значения с клавиатуры. Нужно используя конструкторы и деструкторы...

Конструкторы и деструкторы
#include &lt;iostream&gt; #include &lt;Windows.h&gt; class Try { public: void* px; Try() { printf(&quot;Try\n&quot;); px=malloc(12); }; ...

Где деструкторы?
Ребят сижу разбираю код на С++,не могу понять где диструктор тут.. #include &lt;vcl.h&gt; #pragma hdrstop #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru