Modify the class Song you created for part 2  by doing the following: (a) Add a default constructor that initializes the song to have invalid as title and artist, and −1 as recording year. (b) Add a constructor Song(title) that initializes the song to the given title (that is, to the title given as argument). The artist and recording year are initialized to unknown and −1, respectively. The argument is a string. (c) Add a constructor Song(title, artist, year) that initializes the song to the given title, artist and recording year. The first two arguments are strings, the third one is an integer. (d) Replace the function equals(s1, s2) by a method equals(other) that returns true if the receiver and the argument have the same title, artist and recording year. (e) Add a method less_than(other) that returns true if the title of the first song is less than the title of the second song. In case the titles of the two songs are identical, the method returns true if the artist of the first song is less than the artist of the second song. In case the titles and artists of the two songs are identical, the method returns true if the first song was recorded before the second one. In all other 1 cases, the method returns false. Titles and artists are compared with respect to alphabetical order. (You can use < on strings for that purpose.) (f) Add methods title(), artist() and year() that return, respectively, the title, artist and recording year of the song. The first two functions return a string by constant reference. The third one returns an integer. Once again, you’ll need to decide how arguments should be passed to the methods. Declare methods to be constant, as appropriate. Use initializers and delegating constructors, as appropriate. Organize your class as discussed in Section 2.1 of the notes and declare methods to be inline, as appropriate. Write (and submit) a test driver for your class. Make sure you test every method   My code from part 2: #include #include class Song { private:   std::string title;   std::string artist;   int year; public:   // Constructor   Song(std::string t, std::string a, int y) : title(t), artist(a), year(y) {}        // Methods   void print(std::ostream &out = std::cout) const {     out << title << std::endl << artist << std::endl << year << std::endl;   }   void read(std::istream &in = std::cin) {     std::getline(in, title);     std::getline(in, artist);     in >> year;     in.ignore();   }   // Overloading == operator   bool operator==(const Song &other) const {     return title == other.title && artist == other.artist && year == other.year;   } }; int main() {   Song song1("title1", "artist1", 2000);   Song song2("title2", "artist2", 2010);   Song song3("demo1", "demo1", 0000);   // Testing print method   song1.print();   std::cout << std::endl;   song2.print();   std::cout << std::endl;   // Testing read method   song3.read(); //   song3.print();   std::cout << "\n" << std::endl;   // Testing == operator   if (song1 == song3) {     std::cout << "song1 and song3 are equal" << std::endl;   } else {     std::cout << "song1 and song3 are not equal" << std::endl;   }   if (song1 == song2) {     std::cout << "song1 and song2 are equal" << std::endl;   } else {     std::cout << "song1 and song2 are not equal" << std::endl;   }   return 0; }

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Can you help me with this code for C++ please:

(100%) Modify the class Song you created for part 2  by
doing the following:
(a) Add a default constructor that initializes the song to have invalid as
title and artist, and −1 as recording year.
(b) Add a constructor Song(title) that initializes the song to the
given title (that is, to the title given as argument). The artist and
recording year are initialized to unknown and −1, respectively. The
argument is a string.
(c) Add a constructor Song(title, artist, year) that initializes
the song to the given title, artist and recording year. The first two
arguments are strings, the third one is an integer.
(d) Replace the function equals(s1, s2) by a method
equals(other) that returns true if the receiver and the
argument have the same title, artist and recording year.
(e) Add a method less_than(other) that returns true if the title of
the first song is less than the title of the second song. In case the titles
of the two songs are identical, the method returns true if the artist
of the first song is less than the artist of the second song. In case the
titles and artists of the two songs are identical, the method returns
true if the first song was recorded before the second one. In all other
1
cases, the method returns false. Titles and artists are compared
with respect to alphabetical order. (You can use < on strings for that
purpose.)
(f) Add methods title(), artist() and year() that return, respectively, the title, artist and recording year of the song. The first
two functions return a string by constant reference. The third one
returns an integer.
Once again, you’ll need to decide how arguments should be passed to the
methods.
Declare methods to be constant, as appropriate. Use initializers and delegating constructors, as appropriate.
Organize your class as discussed in Section 2.1 of the notes and declare
methods to be inline, as appropriate.
Write (and submit) a test driver for your class. Make sure you test every
method

 

My code from part 2:

#include <iostream>
#include <string>

class Song {
private:
  std::string title;
  std::string artist;
  int year;

public:
  // Constructor
  Song(std::string t, std::string a, int y) : title(t), artist(a), year(y) {}
    
  // Methods
  void print(std::ostream &out = std::cout) const {
    out << title << std::endl << artist << std::endl << year << std::endl;
  }

  void read(std::istream &in = std::cin) {
    std::getline(in, title);
    std::getline(in, artist);
    in >> year;
    in.ignore();
  }

  // Overloading == operator
  bool operator==(const Song &other) const {
    return title == other.title && artist == other.artist && year == other.year;
  }
};

int main() {
  Song song1("title1", "artist1", 2000);
  Song song2("title2", "artist2", 2010);
  Song song3("demo1", "demo1", 0000);

  // Testing print method
  song1.print();
  std::cout << std::endl;
  song2.print();
  std::cout << std::endl;

  // Testing read method
  song3.read();
//   song3.print();
  std::cout << "\n" << std::endl;

  // Testing == operator
  if (song1 == song3) {
    std::cout << "song1 and song3 are equal" << std::endl;
  } else {
    std::cout << "song1 and song3 are not equal" << std::endl;
  }

  if (song1 == song2) {
    std::cout << "song1 and song2 are equal" << std::endl;
  } else {
    std::cout << "song1 and song2 are not equal" << std::endl;
  }

  return 0;
}

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps

Blurred answer
Knowledge Booster
Data members
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education