Jump to content
  • 0

Помогите разобрать с задачей на JavaScript


Akkord87
 Share

Question

Задача такая:
- при помощи объектно - ориентированного программирования на JavaScript (используя: классы и наследование) собрать вывод календаря на ближайшие 2 недели. Объекты недели и дни. Добавить в структуру выходные дни.

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

Link to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 0

1. Для начала определите какие сущности есть в приложении и какие между ними отношения. Можно в форме схемки нарисовать.

2. Затем, для каждого типа сущностей спроектируете классы: какие свойства (поля) и методы (действия) могут быть у объектов (экземпляров) придуманных классов. Лучше сперва тоже на бумаге.

Link to comment
Share on other sites

  • 0

1. Для начала определите какие сущности есть в приложении и какие между ними отношения. Можно в форме схемки нарисовать.

2. Затем, для каждого типа сущностей спроектируете классы: какие свойства (поля) и методы (действия) могут быть у объектов (экземпляров) придуманных классов. Лучше сперва тоже на бумаге.

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

Link to comment
Share on other sites

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

 

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

 

Для того, чтобы решать такие задачи, необходимо:

1. знать что такое классы/прототипы

2. как работает наследование,(и для чего оно)

3. хотя бы немного уметь и понимать ооп

 

Что из вышеперечисленного ты знаешь/умеешь?

Не вижу твоих наработок.

Edited by nerv
Link to comment
Share on other sites

  • 0

 

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

 

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

 

Для того, чтобы решать такие задачи, необходимо:

1. знать что такое классы/прототипы

2. как работает наследование,(и для чего оно)

3. хотя бы немного уметь и понимать ооп

 

Что из вышеперечисленного ты знаешь/умеешь?

Не вижу твоих наработок.

 

Как я понял, объектно ориентированное программирование основано на создании классов и прототипах объектов ( то есть наследование), любые данные мы рассматриваем как объекты (сущности), у которых имеются свои методы и свойства, часть их которых общие и наследуются от других объектов. Я правильно понял? :)

 

Вот код с моими комментариями и попытка сделать задачу :)

http://learn.javascript.ru/play/FwZrcb

Edited by Akkord87
Link to comment
Share on other sites

  • 0

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

Попробуйте для начала вдумчиво пройти этот курс http://learn.javascript.ru/ от начала до конца. Большинство вопросов, я думаю сами отпадут.

Когда разберётесь с основами языка и ОО Программирования. Если возникнут вопросы по ОО Проектированию, возвращайтесь, будем проектировать.

Link to comment
Share on other sites

  • 0

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

Попробуйте для начала вдумчиво пройти этот курс http://learn.javascript.ru/ от начала до конца. Большинство вопросов, я думаю сами отпадут.

Когда разберётесь с основами языка и ОО Программирования. Если возникнут вопросы по ОО Проектированию, возвращайтесь, будем проектировать.

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

Как создавать объект Data, какие методы у него имеются это мне тоже известно.

http://jsfiddle.net/akkord1987/4Hqcn/2/#

 

Мне нужно показать, хотя бы немного, как эта задача реализуется, я все пойму:) . Как создать объект неделя? Ведь такого встроенного метода в JS нету.

Link to comment
Share on other sites

  • 0

Имхо, "Неделя" — это коллекция объектов типа "День".

Вот мой вариант решения задачи:

 

http://learn.javascript.ru/play/5ZAat

 

Еще я не понял с выводом календаря. Поэтому я вывел дату просто через alert

Link to comment
Share on other sites

  • 0

Где же у вас прототипы?

Week.prototype = new Day();

Month.prototype = new Week();

Year.prototype = new Month();

 

Так вот они)

 

Класс Year наследует методы от Month (то есть является его прототипом) и так дальше по цепочке.

Edited by Akkord87
Link to comment
Share on other sites

  • 0

Было:

function Day() {  this.getDayWeek = function(xDate) {    var day = xDate.getDay();    var arrDay = [      'Воскресенье',       'Понедельник',       'Вторник',      'Среда',      'Четверг',      'Пятница',      'Суббота',    ]    return arrDay[day];  }		}
Стало:

var Day = function() {};Day.prototype.getDayWeek = function(xDate) {  var day = xDate.getDay(),      arrDay = [        'Воскресенье',         'Понедельник',         'Вторник',        'Среда',        'Четверг',        'Пятница',        'Суббота',      ];    return arrDay[day];};
Link to comment
Share on other sites

  • 0

Было:

 

function Day() {  this.getDayWeek = function(xDate) {    var day = xDate.getDay();    var arrDay = [      'Воскресенье',       'Понедельник',       'Вторник',      'Среда',      'Четверг',      'Пятница',      'Суббота',    ]    return arrDay[day];  }		}
Стало:

var Day = function() {};Day.prototype.getDayWeek = function(xDate) {  var day = xDate.getDay(),      arrDay = [        'Воскресенье',         'Понедельник',         'Вторник',        'Среда',        'Четверг',        'Пятница',        'Суббота',      ];    return arrDay[day];};

Вариант) А чем этот способ лучше? Немного меньше кода?

Edited by Akkord87
Link to comment
Share on other sites

  • 0

Ну в вашем случае в целом ничем. Но вообще методы рекомендуется добавлять в прототип, а не через this, потому что если они добавлены как у вас (внутри конструктора), то каждый раз при создании объекта (вызов через new) в памяти будут создаваться идентичные методы. А если добавлять как у меня (через prototype), то сколько бы раз я не писал new Day() на памяти это никак не отразится, потому что прототип у всех объектов будет один.

Link to comment
Share on other sites

  • 0

Ну в вашем случае в целом ничем. Но вообще методы рекомендуется добавлять в прототип, а не через this, потому что если они добавлены как у вас (внутри конструктора), то каждый раз при создании объекта (вызов через new) в памяти будут создаваться идентичные методы. А если добавлять как у меня (через prototype), то сколько бы раз я не писал new Day() на памяти это никак не отразится, потому что прототип у всех объектов будет один.

Понял, спс за разъяснение:) Скажите, а как в этой задаче можно вывести целый месяц, то есть числа с 1 по 30 июня при этом выделить сегодняшнее число?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy