Objects and Classes Using Objects and Classes Defining Simple Classes SoftUni Team Technical Trainers Software University

Slides:



Advertisements
Similar presentations
Software Quality Assurance QA Engineering, Testing, Bug Tracking, Test Automation Software University Technical Trainers SoftUni Team.
Advertisements

 Dimitar Ivanov Introduction to programming with microcontrollers.
C# Advanced Topics Methods, Classes and Objects SoftUni Team Technical Trainers Software University
Methods Writing and using methods, overloads, ref, out SoftUni Team Technical Trainers Software University
Software University Curriculum, Courses, Exams, Jobs SoftUni Team Technical Trainers Software University
Fundamentals SoftUni Welcome to Software University SoftUni Team Technical Trainers Software University
Loops, Methods, Classes Loops, Methods, Using API Classes, Exceptions SoftUni Team Technical Trainer Software University
Programming Basics Course Introduction SoftUni Team Technical Trainers Software University
Software Testing Lifecycle Exit Criteria Evaluation, Continuous Integration Ivan Yonkov Technical Trainer Software University.
Teamwork and Personal Skills Course Introduction Software University SoftUni Team Technical Trainers.
Design Patterns: Structural Design Patterns
Conditional Statements Implementing Control-Flow Logic in C# SoftUni Team Technical Trainers Software University
Consuming REST Services from C# SoftUni Team Technical Trainers Software University
Loops Repeating Code Multiple Times SoftUni Team Technical Trainers Software University
Entity Framework Performance SoftUni Team Technical Trainers Software University
Methods, Arrays, Lists, Dictionaries, Strings, Classes and Objects
Svetlin Nakov Technical Trainer Software University
Build Processes and Continuous Integration Automating Build Processes Software University Technical Trainers SoftUni Team.
Processing Redis with.NET How to Operate with Redis Databases SoftUni Team Technical Trainers Software University
Multidimensional Arrays, Sets, Dictionaries Processing Matrices, Multidimensional Arrays, Dictionaries, Sets SoftUni Team Technical Trainers Software University.
Loops, Methods, Classes Using Loops, Defining and Using Methods, Using API Classes, Exceptions, Defining Classes Bogomil Dimitrov Technical Trainer Software.
Test-Driven Development Learn the "Test First" Approach to Coding SoftUni Team Technical Trainers Software University
Defining Classes Classes, Fields, Constructors, Methods, Properties SoftUni Team Technical Trainers Software University
Arrays, Lists, Stacks, Queues Processing Sequences of Elements SoftUni Team Technical Trainers Software University
Asynchronous Web Services Writing Asynchronous Web Services SoftUni Team Technical Trainers Software University
C# Basics Course Introduction Svetlin Nakov Technical Trainer Software University
Jekyll Static Site Generator Template-Based Site Generation Svetlin Nakov Technical Trainer Software University
Exam Preparation Algorithms Course: Sample Exam SoftUni Team Technical Trainers Software University
Console Input / Output Reading and Writing to the Console SoftUni Team Technical Trainers Software University
Processing JSON in.NET JSON, JSON.NET LINQ-to-JSON and JSON to XML SoftUni Team Technical Trainers Software University
High-Quality Code: Course Introduction Course Introduction SoftUni Team Technical Trainers Software University
Design Patterns: Structural Design Patterns General and reusable solutions to common problems in software design Software University
Advanced C# Course Introduction SoftUni Team Technical Trainers Software University
Object-Oriented Programming Course Introduction Svetlin Nakov Technical Trainer Software University
Reflection Programming under the hood SoftUni Team Technical Trainers Software University
C# Advanced Topics Methods, Arrays, Lists, Dictionaries, Strings, Classes and Objects SoftUni Team Technical Trainers Software University
Mocking with Moq Tools for Easier Unit Testing SoftUni Team Technical Trainers Software University
Operators and Expressions
Design Patterns: Behavioral Design Patterns General and reusable solutions to common problems in software design Software University
Data Structures Curriculum, Trainers, Evaluation, Exams SoftUni Team Technical Trainers Software University
Mocking Unit Testing Methods with External Dependencies SoftUni Team Technical Trainers Software University
Mocking with Moq Mocking tools for easier unit testing Svetlin Nakov Technical Trainer Software University
Programming for Beginners Course Introduction SoftUni Team Technical Trainers Software University
Processing Sequences of Elements
Sets, Dictionaries SoftUni Team Technical Trainers Software University
Lists and Matrices Lists: Variable-Size Arrays Matrices: Arrays of Arrays (Tables) SoftUni Team Technical Trainers Software University
High-Quality Code: Course Introduction Course Introduction SoftUni Team Technical Trainers Software University
Advanced Tree Structures Binary Trees, AVL Tree, Red-Black Tree, B-Trees, Heaps SoftUni Team Technical Trainers Software University
Loops, Methods, Classes Using Loops, Defining and Using Methods, Using API Classes, Exceptions, Defining Classes Svetlin Nakov Technical Trainer
Functional Programming Data Aggregation and Nested Queries Ivan Yonkov Technical Trainer Software University
Software Technologies Course Overview SoftUni Team Technical Trainers Software University
Programming Fundamentals Course Introduction SoftUni Team Technical Trainers Software University
Doctrine The PHP ORM SoftUni Team Technical Trainers Software University
ASP.NET MVC Course Program, Trainers, Evaluation, Exams, Resources SoftUni Team Technical Trainers Software University
First Steps in PHP Creating Very Simple PHP Scripts SoftUni Team Technical Trainers Software University
Inheritance Class Hierarchies SoftUni Team Technical Trainers Software University
Static Members Static Variables & Methods SoftUni Team Technical Trainers Software University
Stacks and Queues Processing Sequences of Elements SoftUni Team Technical Trainers Software University
Generics SoftUni Team Technical Trainers Software University
C# OOP Advanced Course Introduction SoftUni Team Technical Trainers Software University
Java OOP Advanced Course Introduction SoftUni Team Technical Trainers Software University
Using Objects and Classes Defining Simple Classes
C# Basic Syntax, Visual Studio, Console Input / Output
C# Basic Syntax, Visual Studio, Console Input / Output
Repeating Code Multiple Times
Methods, Arrays, Lists, Dictionaries, Strings, Classes and Objects
Array and List Algorithms
Processing Variable-Length Sequences of Elements
Numeral Types and Type Conversion
C# Advanced Course Introduction SoftUni Team C# Technical Trainers
Presentation transcript:

Objects and Classes Using Objects and Classes Defining Simple Classes SoftUni Team Technical Trainers Software University

2  Using Objects and Classes  Using API Classes  Random Numbers  Date / Time Calculations  Download Files from Internet  Calculations with Big Integers  Defining Simple Classes  Bundle Fields Together Table of Contents

Objects and Classes What is Object? What is Class? How to Use Them?

4  In programming objects holds a set of named values  E.g. birthday object holds day, month and year  Creating a birthday object: Objects birthday Day = 27 Month = 11 Year = 1996 Object name Object properties DateTime birthday = new DateTime(1996, 11, 27); The new operator creates a new object

5  In programming classes provide the structure for objects  Act as template for objects of the same type  Classes define:  Data (properties, attributes), e.g. Day, Month, Year  Actions (behavior), e.g. AddDays(count), Subtract(date)  One class may have many instances (objects)  Example class: DateTime  Example objects: peterBirthday, mariaBirthday Classes

6 Classes vs. Objects object peterBirthday Day = 27 Month = 11 Year = 1996 class DateTime Day: int Month: int Year: int AddDays(…) Subtract(…) Class actions (methods) object mariaBirthday Day = 14 Month = 6 Year = 1995 Object name Object data Object name Object data Classes Objects Class name Class data (properties)

7 Objects and Classes – Example DateTime peterBirthday = new DateTime(1996, 11, 27); DateTime mariaBirthday = new DateTime(1995, 6, 14); Console.WriteLine("Peter's birth date: {0:d-MMM-yyyy}", peterBirthday); // 27-Nov-1996 peterBirthday); // 27-Nov-1996 Console.WriteLine("Maria's birth date: {0:d-MMM-yyyy}", mariaBirthday); // 14-Jun-1995 mariaBirthday); // 14-Jun-1995 DateTime mariaAt18Months = mariaBirthday.AddMonths(18); Console.WriteLine("Maria at 18 months: {0:d-MMM-yyyy}", mariaAt18Months); // 14-Dec-1996 mariaAt18Months); // 14-Dec-1996 TimeSpan ageDiff = peterBirthday.Subtract(mariaBirthday); Console.WriteLine("Maria older than Peter by: {0} days", ageDiff.Days); // 532 days ageDiff.Days); // 532 days

8  You are given a date in format day-month-year  Calculate and print the day of week in English Problem: Day of Week Monday Wednesday var dateAsText = Console.ReadLine(); var date = DateTime.ParseExact( dateAsText, "d-M-yyyy", dateAsText, "d-M-yyyy", CultureInfo.InvariantCulture); CultureInfo.InvariantCulture); Console.WriteLine(date.DayOfWeek); Check your solution here: ParseExact(…) needs a format string + culture (locale)

Using the Built-in API Classes Math, Random, BigInteger, etc.

10 .NET Framework provides thousands of ready-to-use classes  Packaged into namespaces like System, System.Text, System.Collections, System.Linq, System.Net, etc.  Using static.NET classes:  Using non-static.NET classes Built-in API Classes in.NET Framework DateTime today = DateTime.Now; double cosine = Math.Cos(Math.PI); Random rnd = new Random(); int randomNumber = rnd.Next(1, 99); Class.StaticMember new Class(…) Object.Member

11 Built-in.NET Classes – Examples DateTime today = DateTime.Now; Console.WriteLine("Today is: " + today); DateTime tomorrow = today.AddDays(1); Console.WriteLine("Tomorrow is: " + tomorrow); double angleDegrees = 60; double angleRadians = angleDegrees * Math.PI / 180; Console.WriteLine(Math.Cos(angleRadians)); // 0.5 Random rnd = new Random(); Console.WriteLine("Random number = " + rnd.Next(1, 100)); WebClient webClient = new WebClient(); webClient.DownloadFile(" content/uploads/2015/10/Intro-CSharp-Book-v2015.pdf", "book.pdf"); Process.Start("book.pdf");

12  You are given a list of words  Randomize their order and print each word at a separate line Problem: Randomize Words 10S 7H 9C 9D JS 7HJS10S9C9D Check your solution here: Note: the output is sample. It should always be different! a b ba PHP Java C# JavaPHPC#

13 Solution: Randomize Words string[] words = Console.ReadLine().Split(' '); Random rnd = new Random(); for (int pos1 = 0; pos1 < words.Length; pos1++) { var pos2 = rnd.Next(words.Length); var pos2 = rnd.Next(words.Length); // TODO: swap words[pos1] with words[pos2] // TODO: swap words[pos1] with words[pos2]} Console.WriteLine(string.Join("\r\n", words)); Check your solution here:

14  Calculate n ! ( n factorial) for very big n (e.g. 1000) Problem: Big Factorial Check your solution here:

15 Solution: Big Factorial var n = int.Parse(Console.ReadLine()); BigInteger f = 1; for (int i = 2; i <= n; i++) f *= i; Console.WriteLine(f); Check your solution here: Use the.NET class System.Numerics.BigInteger

Using the Built-in.NET Classes Live Exercises in Class (Lab)

Defining Simple Classes Bundle Fields Together

18  Simple classes hold a few fields of data, e.g. Defining Simple Classes class Point { public int X { get; set; } public int X { get; set; } public int Y { get; set; } public int Y { get; set; }}… Point p = new Point() { X = 5, Y = 7 }; Console.WriteLine("Point({0}, {1})", p.X, p.Y); Class name Creating new object of class Point Class properties (hold class data)

19  Write a method to calculate the distance between two p 1 { x 1, y 1 } and p 2 { x 2, y 2 }  Write a program to read two points (given as two integers) and print the Euclidean distance between them Problem: Distance between Points double CalcDistance(Point p1, Point p2) { … } Check your solution here:

20  Let's have two points p 1 { x 1, y 1 } and p 2 { x 2, y 2 } Solution: Distance between Points

21 Solution: Distance between Points static void Main() { Point p1 = ReadPoint(); // TODO: implement ReadPoint() Point p1 = ReadPoint(); // TODO: implement ReadPoint() Point p2 = ReadPoint(); Point p2 = ReadPoint(); var dist = CalcDistance(p1, p2); var dist = CalcDistance(p1, p2); Console.WriteLine("Distance: {0:f3}", dist); Console.WriteLine("Distance: {0:f3}", dist);} static double CalcDistance(Point p1, Point p2) { var deltaX = p2.X - p1.X; var deltaX = p2.X - p1.X; var deltaY = p2.Y - p1.Y; var deltaY = p2.Y - p1.Y; return Math.Sqrt(deltaX * deltaX + deltaY * deltaY); return Math.Sqrt(deltaX * deltaX + deltaY * deltaY);} Check your solution here:

22  Write a program to read n points and print the closest two of them Problem: Closest Two Points (3, 4) (2, 5) Check your solution here: (6, 18) (1, 1) (2, 2) (8, -7) (12, -3) (-2, 3) (2, -6)

23 Solution: Closest Two Points static void Main() { Point[] points = ReadPoints(); Point[] points = ReadPoints(); var closestPoints = FindClosestTwoPoints(points); var closestPoints = FindClosestTwoPoints(points); Console.WriteLine("{0:f3}", CalcDistance( Console.WriteLine("{0:f3}", CalcDistance( closestPoints[0], closestPoints[1])); closestPoints[0], closestPoints[1])); PrintPoint(closestPoints[0]); PrintPoint(closestPoints[0]); PrintPoint(closestPoints[1]); PrintPoint(closestPoints[1]);} Check your solution here:

24 Solution: Closest Two Points (2) static Point[] ReadPoints() { var n = int.Parse(Console.ReadLine()); var n = int.Parse(Console.ReadLine()); var points = new Point[n]; var points = new Point[n]; for (int i = 0; i < n; i++) for (int i = 0; i < n; i++) points[i] = ReadPoint(); points[i] = ReadPoint(); return points; return points;} static void PrintPoint(Point point) { Console.WriteLine("({0}, {1})", point.X, point.Y); Console.WriteLine("({0}, {1})", point.X, point.Y);}

25 Solution: Closest Two Points (3) static Point[] FindClosestTwoPoints(Point[] points) { var minDistance = double.MaxValue; var minDistance = double.MaxValue; Point[] closestTwoPoints = null; Point[] closestTwoPoints = null; for (int p1 = 0; p1 < points.Length; p1++) for (int p1 = 0; p1 < points.Length; p1++) for (int p2 = p1 + 1; p2 < points.Length; p2++) for (int p2 = p1 + 1; p2 < points.Length; p2++) { var distance = CalcDistance(points[p1], points[p2]); var distance = CalcDistance(points[p1], points[p2]); if (distance < minDistance) if (distance < minDistance) { minDistance = distance; minDistance = distance; closestTwoPoints = new Point[] { closestTwoPoints = new Point[] { points[p1], points[p2] }; points[p1], points[p2] }; } } return closestTwoPoints; return closestTwoPoints;}

26  Classes can define data (state) and operations (actions) Class Operations class Rectangle { public int Top { get; set; } public int Top { get; set; } public int Left { get; set; } public int Left { get; set; } public int Width { get; set; } public int Width { get; set; } public int Height { get; set; } public int Height { get; set; } int CalcArea() int CalcArea() { return Width * Height; return Width * Height; } Classes hold data (properties) Classes hold operations (methods)

27 Class Operations (2) public int Bottom { get get { return Top + Height; return Top + Height; }} public int Right { get get { return Left + Width; return Left + Width; }} Calculated property public bool IsInside(Rectangle r) { return (r.Left = Right) && return (r.Left = Right) && (r.Top = Bottom); (r.Top = Bottom);}

28  Write program to read two rectangles {left, top, width, height} and print whether the first is inside the second Problem: Rectangle Position Inside Not inside Rectangle r1 = ReadRectangle(), r2 = ReadRectangle(); Console.WriteLine(r1.IsInside(r2) ? "Inside" : "Not inside"); "Not inside"); Check your solution here:

Defining Simple Classes Live Exercises in Class (Lab)

30  Write a class Sale holding the following data:  Town, product, price, quantity  Read a list of sales and print the total sales by town: Homework: Sales Report 5 Sofia beer Varna chocolate Sofia coffee Varna apple Plovdiv beer Check your solution here: Plovdiv -> Sofia -> Varna ->

31 Solution: Sales Report class Sale { public string Town { get; set; } public string Town { get; set; } // TODO: add the other fields … // TODO: add the other fields … public decimal Quantity { get; set; } public decimal Quantity { get; set; }} static Sale ReadSale() { var items = Console.ReadLine().Split(' ').ToArray(); var items = Console.ReadLine().Split(' ').ToArray(); return new Sale() { return new Sale() { Town = items[0], …, Quantity = decimal.Parse(items[3]) Town = items[0], …, Quantity = decimal.Parse(items[3]) }; };}

32 Solution: Sales Report (2) static Sale[] ReadSales() { var n = int.Parse(Console.ReadLine()); var n = int.Parse(Console.ReadLine()); var sales = new Sale[n]; var sales = new Sale[n]; // TODO: read the sales … // TODO: read the sales …}… Sale[] sales = ReadSales(); var towns = sales.Select(s => s.Town).Distinct().OrderBy(t => t); foreach (var town in towns) { var salesByTown = sales.Where(s => s.Town == town) var salesByTown = sales.Where(s => s.Town == town).Select(s => s.Price * s.Quantity).Sum();.Select(s => s.Price * s.Quantity).Sum(); Console.WriteLine("{0} -> {1:f2}", town, salesByTown); Console.WriteLine("{0} -> {1:f2}", town, salesByTown);} Can you make this faster using Dictionary ?

33  Objects holds a set of named values  Classes define object data and actions  Creating and using objects:  Defining classes: Summary var d = new DateTime(1980, 6, 14); Console.WriteLine(d.Year); class Point { public int X { get; set; } public int X { get; set; } public int Y { get; set; } public int Y { get; set; }}

? ? ? ? ? ? ? ? ? Objects and Classes

License  This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International" licenseCreative Commons Attribution- NonCommercial-ShareAlike 4.0 International  Attribution: this work may contain portions from  "Fundamentals of Computer Programming with C#" book by Svetlin Nakov & Co. under CC-BY-SA licenseFundamentals of Computer Programming with C#CC-BY-SA 35

Free Software University  Software University Foundation – softuni.orgsoftuni.org  Software University – High-Quality Education, Profession and Job for Software Developers  softuni.bg softuni.bg  Software Facebook  facebook.com/SoftwareUniversity facebook.com/SoftwareUniversity  Software YouTube  youtube.com/SoftwareUniversity youtube.com/SoftwareUniversity  Software University Forums – forum.softuni.bgforum.softuni.bg