From e9f365a853eccaccc51e499bccbaa718b1b7da92 Mon Sep 17 00:00:00 2001 From: Spencer Smith <smiths@mcmaster.ca> Date: Tue, 13 Mar 2018 14:12:44 -0400 Subject: [PATCH] DataSet examples without abstract class --- Lectures/L27_SpecViaUML/DataSet/Makefile | 53 ++++++++++++++++++ Lectures/L27_SpecViaUML/DataSet/bin/.gitkeep | 0 .../L27_SpecViaUML/DataSet/bin/experiment | Bin 0 -> 9312 bytes .../DataSet/experimentation/main.cpp | 18 ++++++ .../L27_SpecViaUML/DataSet/include/DataSet.h | 22 ++++++++ .../L27_SpecViaUML/DataSet/src/DataSet.cpp | 26 +++++++++ .../DataSetBankAccount/Makefile | 53 ++++++++++++++++++ .../DataSetBankAccount/bin/.gitkeep | 0 .../DataSetBankAccount/bin/experiment | Bin 0 -> 14296 bytes .../experimentation/main.cpp | 23 ++++++++ .../DataSetBankAccount/include/BankAccount.h | 20 +++++++ .../include/DataSetBankAccount.h | 20 +++++++ .../DataSetBankAccount/src/BankAccount.cpp | 29 ++++++++++ .../src/DataSetBankAccount.cpp | 26 +++++++++ .../L27_SpecViaUML/DataSetPointT/Makefile | 53 ++++++++++++++++++ .../L27_SpecViaUML/DataSetPointT/bin/.gitkeep | 0 .../DataSetPointT/bin/experiment | Bin 0 -> 14280 bytes .../DataSetPointT/experimentation/main.cpp | 20 +++++++ .../DataSetPointT/include/DataSetPoint.h | 20 +++++++ .../DataSetPointT/include/PointT.h | 21 +++++++ .../DataSetPointT/src/DataSetPoint.cpp | 26 +++++++++ .../DataSetPointT/src/PointT.cpp | 38 +++++++++++++ 22 files changed, 468 insertions(+) create mode 100644 Lectures/L27_SpecViaUML/DataSet/Makefile create mode 100644 Lectures/L27_SpecViaUML/DataSet/bin/.gitkeep create mode 100755 Lectures/L27_SpecViaUML/DataSet/bin/experiment create mode 100644 Lectures/L27_SpecViaUML/DataSet/experimentation/main.cpp create mode 100644 Lectures/L27_SpecViaUML/DataSet/include/DataSet.h create mode 100644 Lectures/L27_SpecViaUML/DataSet/src/DataSet.cpp create mode 100644 Lectures/L27_SpecViaUML/DataSetBankAccount/Makefile create mode 100644 Lectures/L27_SpecViaUML/DataSetBankAccount/bin/.gitkeep create mode 100755 Lectures/L27_SpecViaUML/DataSetBankAccount/bin/experiment create mode 100644 Lectures/L27_SpecViaUML/DataSetBankAccount/experimentation/main.cpp create mode 100644 Lectures/L27_SpecViaUML/DataSetBankAccount/include/BankAccount.h create mode 100644 Lectures/L27_SpecViaUML/DataSetBankAccount/include/DataSetBankAccount.h create mode 100644 Lectures/L27_SpecViaUML/DataSetBankAccount/src/BankAccount.cpp create mode 100644 Lectures/L27_SpecViaUML/DataSetBankAccount/src/DataSetBankAccount.cpp create mode 100644 Lectures/L27_SpecViaUML/DataSetPointT/Makefile create mode 100644 Lectures/L27_SpecViaUML/DataSetPointT/bin/.gitkeep create mode 100755 Lectures/L27_SpecViaUML/DataSetPointT/bin/experiment create mode 100644 Lectures/L27_SpecViaUML/DataSetPointT/experimentation/main.cpp create mode 100644 Lectures/L27_SpecViaUML/DataSetPointT/include/DataSetPoint.h create mode 100644 Lectures/L27_SpecViaUML/DataSetPointT/include/PointT.h create mode 100644 Lectures/L27_SpecViaUML/DataSetPointT/src/DataSetPoint.cpp create mode 100644 Lectures/L27_SpecViaUML/DataSetPointT/src/PointT.cpp diff --git a/Lectures/L27_SpecViaUML/DataSet/Makefile b/Lectures/L27_SpecViaUML/DataSet/Makefile new file mode 100644 index 00000000..d2c5aca0 --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSet/Makefile @@ -0,0 +1,53 @@ +SRC_DIRS := src +C_SRCS := $(foreach srcdir,$(SRC_DIRS),$(wildcard $(srcdir)/*.c)) +CXX_SRCS := $(foreach srcdir,$(SRC_DIRS),$(wildcard $(srcdir)/*.cpp)) +C_OBJS := ${C_SRCS:.c=.o} +CXX_OBJS := ${CXX_SRCS:.cpp=.o} +OBJS := $(C_OBJS) $(CXX_OBJS) +INCLUDE_DIRS := include +LIBRARY_DIRS := +LIBRARIES := + +prog_NAME := experiment +prog_DIR := bin +prog_FULL := $(prog_DIR)/$(prog_NAME) +prog_SRC_DIRS := experimentation +prog_C_SRCS := $(foreach srcdir,$(prog_SRC_DIRS),$(wildcard $(srcdir)/*.c)) +prog_CXX_SRCS := $(foreach srcdir,$(prog_SRC_DIRS),$(wildcard $(srcdir)/*.cpp)) +prog_C_OBJS := ${prog_C_SRCS:.c=.o} +prog_CXX_OBJS := ${prog_CXX_SRCS:.cpp=.o} +prog_OBJS := $(prog_C_OBJS) $(prog_CXX_OBJS) +prog_INCLUDE_DIRS := +prog_LIBRARY_DIRS := +prog_LIBRARIES := + +all_OBJS := $(OBJS) $(prog_OBJS) $(test_OBJS) +DEP := $(all_OBJS:%.o=%.d) + +CXXFLAGS += -std=c++11 +CXXFLAGS += $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir)) +LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) +LDFLAGS += $(foreach library,$(LIBRARIES),-l$(library)) + +.PHONY: experiment src clean + +experiment: CXXFLAGS += $(foreach includedir,$(prog_INCLUDE_DIRS),-I$(includedir)) +experiment: LDFLAGS += $(foreach librarydir,$(prog_LIBRARY_DIRS),-L$(librarydir)) +experiment: LDFLAGS += $(foreach library,$(prog_LIBRARIES),-l$(library)) + +experiment: $(prog_FULL) + ./$(prog_FULL) + +$(prog_FULL): $(prog_OBJS) $(OBJS) + $(LINK.cc) $^ -o $@ + +-include $(DEP) + +%.o: %.cpp + $(CXX) $(CXXFLAGS) -MMD -c $< -o $@ + +clean: + @- $(RM) $(prog_FULL) + @- $(RM) $(prog_OBJS) + @- $(RM) $(OBJS) + @- $(RM) $(DEP) diff --git a/Lectures/L27_SpecViaUML/DataSet/bin/.gitkeep b/Lectures/L27_SpecViaUML/DataSet/bin/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Lectures/L27_SpecViaUML/DataSet/bin/experiment b/Lectures/L27_SpecViaUML/DataSet/bin/experiment new file mode 100755 index 0000000000000000000000000000000000000000..0d59df813474bbcda943bcd3eeac9395c83bd62f GIT binary patch literal 9312 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 LT#r*1G-3Y$zlSVU literal 0 HcmV?d00001 diff --git a/Lectures/L27_SpecViaUML/DataSet/experimentation/main.cpp b/Lectures/L27_SpecViaUML/DataSet/experimentation/main.cpp new file mode 100644 index 00000000..205661e0 --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSet/experimentation/main.cpp @@ -0,0 +1,18 @@ +#include "DataSet.h" + +#include <iostream> +using namespace std; + +int main() { + + DataSet ds; + ds.add(0.0); + ds.add(5.0); + ds.add(25.0); + ds.add(13.0); + + cout << "average = " << ds.getAverage() << "\n"; + cout << "maximum = " << ds.getMaximum() << "\n"; + + return 0; +} diff --git a/Lectures/L27_SpecViaUML/DataSet/include/DataSet.h b/Lectures/L27_SpecViaUML/DataSet/include/DataSet.h new file mode 100644 index 00000000..60823d93 --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSet/include/DataSet.h @@ -0,0 +1,22 @@ +#ifndef DATASET_H +#define DATASET_H + +class DataSet +{ + private: + double sum; + double maximum; + int count; + + public: + DataSet(); + void add(double x); + double getAverage(); + double getMaximum(); + + friend ostream &operator<<( ostream &output, const PointT &P ) { + output << "x-coord: " << P.xc << "y-coord: " << P.yc; + return output; +}; + +#endif diff --git a/Lectures/L27_SpecViaUML/DataSet/src/DataSet.cpp b/Lectures/L27_SpecViaUML/DataSet/src/DataSet.cpp new file mode 100644 index 00000000..0cc8a8e5 --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSet/src/DataSet.cpp @@ -0,0 +1,26 @@ +#include "DataSet.h" + +DataSet::DataSet() +{ + this->sum = 0.0; + this->maximum = 0.0; + this->count = 0; +} + +void DataSet::add(double x) +{ + this->sum += x; + if (count == 0 || maximum < x) maximum = x; + count++; +} + +double DataSet::getAverage() +{ + if (count == 0) return 0; + else return sum/count; +} + +double DataSet::getMaximum() +{ + return maximum; +} diff --git a/Lectures/L27_SpecViaUML/DataSetBankAccount/Makefile b/Lectures/L27_SpecViaUML/DataSetBankAccount/Makefile new file mode 100644 index 00000000..d2c5aca0 --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSetBankAccount/Makefile @@ -0,0 +1,53 @@ +SRC_DIRS := src +C_SRCS := $(foreach srcdir,$(SRC_DIRS),$(wildcard $(srcdir)/*.c)) +CXX_SRCS := $(foreach srcdir,$(SRC_DIRS),$(wildcard $(srcdir)/*.cpp)) +C_OBJS := ${C_SRCS:.c=.o} +CXX_OBJS := ${CXX_SRCS:.cpp=.o} +OBJS := $(C_OBJS) $(CXX_OBJS) +INCLUDE_DIRS := include +LIBRARY_DIRS := +LIBRARIES := + +prog_NAME := experiment +prog_DIR := bin +prog_FULL := $(prog_DIR)/$(prog_NAME) +prog_SRC_DIRS := experimentation +prog_C_SRCS := $(foreach srcdir,$(prog_SRC_DIRS),$(wildcard $(srcdir)/*.c)) +prog_CXX_SRCS := $(foreach srcdir,$(prog_SRC_DIRS),$(wildcard $(srcdir)/*.cpp)) +prog_C_OBJS := ${prog_C_SRCS:.c=.o} +prog_CXX_OBJS := ${prog_CXX_SRCS:.cpp=.o} +prog_OBJS := $(prog_C_OBJS) $(prog_CXX_OBJS) +prog_INCLUDE_DIRS := +prog_LIBRARY_DIRS := +prog_LIBRARIES := + +all_OBJS := $(OBJS) $(prog_OBJS) $(test_OBJS) +DEP := $(all_OBJS:%.o=%.d) + +CXXFLAGS += -std=c++11 +CXXFLAGS += $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir)) +LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) +LDFLAGS += $(foreach library,$(LIBRARIES),-l$(library)) + +.PHONY: experiment src clean + +experiment: CXXFLAGS += $(foreach includedir,$(prog_INCLUDE_DIRS),-I$(includedir)) +experiment: LDFLAGS += $(foreach librarydir,$(prog_LIBRARY_DIRS),-L$(librarydir)) +experiment: LDFLAGS += $(foreach library,$(prog_LIBRARIES),-l$(library)) + +experiment: $(prog_FULL) + ./$(prog_FULL) + +$(prog_FULL): $(prog_OBJS) $(OBJS) + $(LINK.cc) $^ -o $@ + +-include $(DEP) + +%.o: %.cpp + $(CXX) $(CXXFLAGS) -MMD -c $< -o $@ + +clean: + @- $(RM) $(prog_FULL) + @- $(RM) $(prog_OBJS) + @- $(RM) $(OBJS) + @- $(RM) $(DEP) diff --git a/Lectures/L27_SpecViaUML/DataSetBankAccount/bin/.gitkeep b/Lectures/L27_SpecViaUML/DataSetBankAccount/bin/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Lectures/L27_SpecViaUML/DataSetBankAccount/bin/experiment b/Lectures/L27_SpecViaUML/DataSetBankAccount/bin/experiment new file mode 100755 index 0000000000000000000000000000000000000000..9282b727ae21b5adf2bb74c2d25334fc18f6464d GIT binary patch literal 14296 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 literal 0 HcmV?d00001 diff --git a/Lectures/L27_SpecViaUML/DataSetBankAccount/experimentation/main.cpp b/Lectures/L27_SpecViaUML/DataSetBankAccount/experimentation/main.cpp new file mode 100644 index 00000000..cc590ff8 --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSetBankAccount/experimentation/main.cpp @@ -0,0 +1,23 @@ +#include "BankAccount.h" +#include "DataSetBankAccount.h" + +#include <iostream> +using namespace std; + +int main() +{ + + BankAccount b1; + b1.deposit(300); + BankAccount b2; + b2.deposit(100); + + DataSetBankAccount ds; + ds.add(b1); + ds.add(b2); + + cout << "average = " << ds.getAverage() << "\n"; + cout << "maximum = " << ds.getMaximum() << "\n"; + + return 0; +} diff --git a/Lectures/L27_SpecViaUML/DataSetBankAccount/include/BankAccount.h b/Lectures/L27_SpecViaUML/DataSetBankAccount/include/BankAccount.h new file mode 100644 index 00000000..90b9e587 --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSetBankAccount/include/BankAccount.h @@ -0,0 +1,20 @@ +#ifndef BANKACCOUNT_H +#define BANKACCOUNT_H + +#include <iostream> + +class BankAccount +{ + public: + BankAccount(); + void deposit(double amount); + void withdraw(double amount); + double getBalance(); + + friend std::ostream& operator<< (std::ostream &out, const BankAccount &ba); + + private: + double balance; +}; + +#endif diff --git a/Lectures/L27_SpecViaUML/DataSetBankAccount/include/DataSetBankAccount.h b/Lectures/L27_SpecViaUML/DataSetBankAccount/include/DataSetBankAccount.h new file mode 100644 index 00000000..fbc4622b --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSetBankAccount/include/DataSetBankAccount.h @@ -0,0 +1,20 @@ +#ifndef DATASETBANKACCOUNT_H +#define DATASETBANKACCOUNT_H + +#include "BankAccount.h" + +class DataSetBankAccount +{ + private: + double sum; + BankAccount maximum; + int count; + + public: + DataSetBankAccount(); + void add(BankAccount x); + double getAverage(); + BankAccount getMaximum(); +}; + +#endif diff --git a/Lectures/L27_SpecViaUML/DataSetBankAccount/src/BankAccount.cpp b/Lectures/L27_SpecViaUML/DataSetBankAccount/src/BankAccount.cpp new file mode 100644 index 00000000..9e467380 --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSetBankAccount/src/BankAccount.cpp @@ -0,0 +1,29 @@ +#include "BankAccount.h" + +BankAccount::BankAccount() +{ + this->balance = 0.0; +} + +void BankAccount::deposit(double amount) +{ + this->balance += amount; +} + +void BankAccount::withdraw(double amount) +{ + this->balance -= amount; +} + +double BankAccount::getBalance() +{ + return balance; +} + +std::ostream& operator<< (std::ostream &out, const BankAccount &ba) +{ + //From http://www.learncpp.com/cpp-tutorial/93-overloading-the-io-operators/ + out << "BankAccount(" << ba.balance << ") "; + + return out; +} diff --git a/Lectures/L27_SpecViaUML/DataSetBankAccount/src/DataSetBankAccount.cpp b/Lectures/L27_SpecViaUML/DataSetBankAccount/src/DataSetBankAccount.cpp new file mode 100644 index 00000000..97554336 --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSetBankAccount/src/DataSetBankAccount.cpp @@ -0,0 +1,26 @@ +#include "DataSetBankAccount.h" +#include "BankAccount.h" + +DataSetBankAccount::DataSetBankAccount() : maximum() +{ + this->sum = 0.0; + this->count = 0; +} + +void DataSetBankAccount::add(BankAccount x) +{ + this->sum += x.getBalance(); + if (count == 0 || maximum.getBalance() < x.getBalance()) maximum = x; + count++; +} + +double DataSetBankAccount::getAverage() +{ + if (count == 0) return 0; + else return sum/count; +} + +BankAccount DataSetBankAccount::getMaximum() +{ + return maximum; +} diff --git a/Lectures/L27_SpecViaUML/DataSetPointT/Makefile b/Lectures/L27_SpecViaUML/DataSetPointT/Makefile new file mode 100644 index 00000000..d2c5aca0 --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSetPointT/Makefile @@ -0,0 +1,53 @@ +SRC_DIRS := src +C_SRCS := $(foreach srcdir,$(SRC_DIRS),$(wildcard $(srcdir)/*.c)) +CXX_SRCS := $(foreach srcdir,$(SRC_DIRS),$(wildcard $(srcdir)/*.cpp)) +C_OBJS := ${C_SRCS:.c=.o} +CXX_OBJS := ${CXX_SRCS:.cpp=.o} +OBJS := $(C_OBJS) $(CXX_OBJS) +INCLUDE_DIRS := include +LIBRARY_DIRS := +LIBRARIES := + +prog_NAME := experiment +prog_DIR := bin +prog_FULL := $(prog_DIR)/$(prog_NAME) +prog_SRC_DIRS := experimentation +prog_C_SRCS := $(foreach srcdir,$(prog_SRC_DIRS),$(wildcard $(srcdir)/*.c)) +prog_CXX_SRCS := $(foreach srcdir,$(prog_SRC_DIRS),$(wildcard $(srcdir)/*.cpp)) +prog_C_OBJS := ${prog_C_SRCS:.c=.o} +prog_CXX_OBJS := ${prog_CXX_SRCS:.cpp=.o} +prog_OBJS := $(prog_C_OBJS) $(prog_CXX_OBJS) +prog_INCLUDE_DIRS := +prog_LIBRARY_DIRS := +prog_LIBRARIES := + +all_OBJS := $(OBJS) $(prog_OBJS) $(test_OBJS) +DEP := $(all_OBJS:%.o=%.d) + +CXXFLAGS += -std=c++11 +CXXFLAGS += $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir)) +LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) +LDFLAGS += $(foreach library,$(LIBRARIES),-l$(library)) + +.PHONY: experiment src clean + +experiment: CXXFLAGS += $(foreach includedir,$(prog_INCLUDE_DIRS),-I$(includedir)) +experiment: LDFLAGS += $(foreach librarydir,$(prog_LIBRARY_DIRS),-L$(librarydir)) +experiment: LDFLAGS += $(foreach library,$(prog_LIBRARIES),-l$(library)) + +experiment: $(prog_FULL) + ./$(prog_FULL) + +$(prog_FULL): $(prog_OBJS) $(OBJS) + $(LINK.cc) $^ -o $@ + +-include $(DEP) + +%.o: %.cpp + $(CXX) $(CXXFLAGS) -MMD -c $< -o $@ + +clean: + @- $(RM) $(prog_FULL) + @- $(RM) $(prog_OBJS) + @- $(RM) $(OBJS) + @- $(RM) $(DEP) diff --git a/Lectures/L27_SpecViaUML/DataSetPointT/bin/.gitkeep b/Lectures/L27_SpecViaUML/DataSetPointT/bin/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Lectures/L27_SpecViaUML/DataSetPointT/bin/experiment b/Lectures/L27_SpecViaUML/DataSetPointT/bin/experiment new file mode 100755 index 0000000000000000000000000000000000000000..674f0f6c1ffbc463f3ebf29fbb5d2acb7c1e0d3d GIT binary patch literal 14280 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 ZJR{5B$5^MTYWR^4f3+EUs?)Tw{s)LP0Wtsp literal 0 HcmV?d00001 diff --git a/Lectures/L27_SpecViaUML/DataSetPointT/experimentation/main.cpp b/Lectures/L27_SpecViaUML/DataSetPointT/experimentation/main.cpp new file mode 100644 index 00000000..e135e0ff --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSetPointT/experimentation/main.cpp @@ -0,0 +1,20 @@ +#include "PointT.h" +#include "DataSetPoint.h" + +#include <iostream> +using namespace std; + +int main() +{ + + DataSetPoint ds; + ds.add(PointT(0.0, 0.0)); + ds.add(PointT(3.0, 4.0)); + ds.add(PointT(7.0, 24.0)); + ds.add(PointT(5.0, 12.0)); + + cout << "average = " << ds.getAverage() << "\n"; + cout << "maximum = " << ds.getMaximum() << "\n"; + + return 0; +} diff --git a/Lectures/L27_SpecViaUML/DataSetPointT/include/DataSetPoint.h b/Lectures/L27_SpecViaUML/DataSetPointT/include/DataSetPoint.h new file mode 100644 index 00000000..bcc6f269 --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSetPointT/include/DataSetPoint.h @@ -0,0 +1,20 @@ +#ifndef DATASETPOINT_H +#define DATASETPOINT_H + +#include "PointT.h" + +class DataSetPoint +{ + private: + double sum; + PointT maximum; + int count; + + public: + DataSetPoint(); + void add(PointT x); + double getAverage(); + PointT getMaximum(); +}; + +#endif diff --git a/Lectures/L27_SpecViaUML/DataSetPointT/include/PointT.h b/Lectures/L27_SpecViaUML/DataSetPointT/include/PointT.h new file mode 100644 index 00000000..ce3f800e --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSetPointT/include/PointT.h @@ -0,0 +1,21 @@ +#ifndef POINTT_H +#define POINTT_H + +#include <iostream> + +class PointT +{ + public: + PointT(double x, double y); + double xcoord(); + double ycoord(); + double distToOrigin(); + + friend std::ostream& operator<< (std::ostream &out, const PointT &point); + + private: + double xc; + double yc; +}; + +#endif diff --git a/Lectures/L27_SpecViaUML/DataSetPointT/src/DataSetPoint.cpp b/Lectures/L27_SpecViaUML/DataSetPointT/src/DataSetPoint.cpp new file mode 100644 index 00000000..dc6da8fa --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSetPointT/src/DataSetPoint.cpp @@ -0,0 +1,26 @@ +#include "DataSetPoint.h" +#include "PointT.h" + +DataSetPoint::DataSetPoint() : maximum(0.0, 0.0) +{ + this->sum = 0.0; + this->count = 0; +} + +void DataSetPoint::add(PointT x) +{ + this->sum += x.distToOrigin(); + if (count == 0 || maximum.distToOrigin() < x.distToOrigin()) maximum = x; + count++; +} + +double DataSetPoint::getAverage() +{ + if (count == 0) return 0; + else return sum/count; +} + +PointT DataSetPoint::getMaximum() +{ + return maximum; +} diff --git a/Lectures/L27_SpecViaUML/DataSetPointT/src/PointT.cpp b/Lectures/L27_SpecViaUML/DataSetPointT/src/PointT.cpp new file mode 100644 index 00000000..3f1d5014 --- /dev/null +++ b/Lectures/L27_SpecViaUML/DataSetPointT/src/PointT.cpp @@ -0,0 +1,38 @@ +#include "PointT.h" +#include <cmath> + +PointT::PointT(double x, double y) +{ + this->xc = x; + this->yc = y; +} + +double PointT::xcoord() +{ + return this->xc; +} + +double PointT::ycoord() +{ + return this->yc; +} + +double PointT::distToOrigin() +{ + double dx; + double dy; + + dx = this->xc; + dy = this->yc; + + return sqrt(pow(dx,2.0) + pow(dy,2.0)); +} + +std::ostream& operator<< (std::ostream &out, const PointT& point) +{ + //From http://www.learncpp.com/cpp-tutorial/93-overloading-the-io-operators/ + // Since operator<< is a friend of the Point class, we can access Point's members directly. + out << "PointT(" << point.xc << ", " << point.yc << ")"; + + return out; +} -- GitLab