Data structures and algorithms lab2
-
Upload
bianca-tesila -
Category
Education
-
view
1.437 -
download
0
Transcript of Data structures and algorithms lab2
![Page 1: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/1.jpg)
DATA STRUCTURES AND ALGORITHMS
LAB 2
Bianca Tesila
FILS, Feb 2014
![Page 2: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/2.jpg)
OBJECTIVES
Transition from C to C++ Struct vs. classes in C++ Templates
![Page 3: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/3.jpg)
WHY C++?
C + + allows the implementation of data structures with generic data types via templates.
C follows the procedural programming paradigm while C++ can follow both procedural paradigm and OOP (Which are the OOP principles?)
![Page 4: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/4.jpg)
TRANSITION FROM C TO C++
Any program written in C (“.c” extension) can be compiled by a C++ compiler (“.cpp” extension); not vice versa
In C we don’t have classes!!!
The NAMESPACE feature in C++ is absent in case of C: avoid name collisions (namespaces are similar to Java packages- you can look for differences & similarities for the next time)
Standard input & output functions differ in the two languages: in C, we have scanf and printf; in C++ we have cin>> and cout<<
![Page 5: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/5.jpg)
TRANSITION FROM C TO C++
‼ Exercise: Implement a function to sort an array of 5 elements of type double. Use a swap mechanism, which has to be implemented in another function.
Hint: Pay attention to passing by value/ passing by reference!
Do you remember which is the difference between them?
![Page 6: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/6.jpg)
STRUCTURES VS CLASSES: STRUCTURES IN C++
We can define functions inside a structure; we can access the structure’s fields by using this-><field_name>
C++ structures support inheritance Everything inside a structure is public by default
Example:typedef struct complex {
double re;double im;void complex_initialize(double param_re, double param_im) {this->re = param_re;
this->im = param_im; } struct complex complex_conjugate() {struct complex conjugate;conjugate.complex_initialize(this->re, -(this->im)); return conjugate;
}}complex;
![Page 7: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/7.jpg)
STRUCTURES VS. CLASSES
‼ Exercise: Add to the complex structure new functions for the addition, division and multiplication of complex numbers.
![Page 8: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/8.jpg)
STRUCTURES VS. CLASSES: CLASSES What is a class? What is an object? Replace the keyword struct with the keyword class in the last
exercise C++ structures behave like C++ classes, allowing functions,
contructors, destructors. The main diffrence between classes and C++ structures is that everything inside a structure is public, by default, while everything inside a class is private, by default
![Page 9: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/9.jpg)
STRUCTURES VS. CLASSES: CLASSES
‼ Exercise: Make a Complex class using the previous exercise.
Hint:
Don’t forget about the fact that everything inside a class is private, by default.
Take into account the Encapsulation principle!
![Page 10: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/10.jpg)
TEMPLATE CLASSES Templates are a feature of the C++ programming language
that allow functions and classes to operate with generic types. This allows a function or class to work on many different data types without being rewritten for each one.
Templates are of great utility to programmers in C++, especially when combined with multiple inheritance and operator overloading.
Similar to Java Generics
template<typename T> class class_name { ... } A normal class definition will be prefixed by template<typename
T> The type T can now be used as a valid type within the class
we can have variables, function arguments and function return values of type T
Everything happens at compile time, not runtime The compiler analyzes how you use the class
![Page 11: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/11.jpg)
TEMPLATE CLASSES: EXAMPLE
template<typename T>
class KeyStorage
{
public:
int key;
T member; //a generic member: we don't know its type when creating the class
};
int main()
{
//Everything happens to compile time, not to run time
//The compiler analyses the way in which you use the class
KeyStorage<long> keyElement1;
KeyStorage<int> keyElement2;
return 0;
}
‼ Exercise: Make a constructor, a destructor, a getter and a setter for the template class KeyStorage.
![Page 12: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/12.jpg)
HOMEWORK
Finish all the lab exercises.
Implement a template class for storing the coordinates of a point. Add corresponding methods for moving a point(along Ox, along Oy, along both Ox and Oy). Using the implemented class, develop an application for moving a point inside a rectangle of dimensions 1 x N, where N is given by the user. Start from the origin.
Implement a template class for bank accounts with corresponding methods(deposit, withdrawal, balance display, display owner etc). Develop an application that uses this class.
![Page 13: Data structures and algorithms lab2](https://reader036.fdocuments.net/reader036/viewer/2022073101/555e3481d8b42a63048b4777/html5/thumbnails/13.jpg)
INTERVIEW:
Does overloading exist in C++? Do abstract classes exist in C++? When is it better to use abstract classes and
when templates? Do static classes exist in C++?