目錄表

國立屏東大學 資訊工程學系 物件導向程式設計

Person類別範例1

類別繼承


簡介

Person類別是用以對「真實世界(real world)」中的「人」進行「抽象對映(mapping abstraction)」的定義。

Data Members

Member Functions

Constructor and Destructor

Student類別範例


簡介

Student是繼承自Person類別的類別,用以對「真實世界(real world)」中的「學生」進行「抽象對映(mapping abstraction)」的定義。

Data Members

Member Functions

Constructor and Destructor

Source Code

#include <iostream>
using namespace std;

#ifndef _PERSON_
#define _PERSON_

class Person
{
private:
  string firstname;
  string lastname;

public:  
  Person();
  Person(string, string);
  void showInfo();
  
  void set_firstname(string fn);
  string get_firstname();
  
  void set_lastname(string ln);
  string get_lastname();  
};
#endif

#include "person.h"

Person::Person()
{
  firstname="unknown";
  lastname="unknown";
}

Person::Person(string fn, string ln)
{
  firstname=fn;
  lastname=ln;
}

void Person::showInfo()
{
  cout << "Name: " << firstname << " " << lastname << endl;
}

void Person::set_firstname(string fn)
{
  firstname=fn;
}

string Person::get_firstname()
{
  return firstname;
}

void Person::set_lastname(string ln)
{
  lastname=ln;
}

string Person::get_lastname()
{
  return lastname;
}

#ifndef _STUDENT_
#define _STUDENT_
#include "person.h"

class Student : public Person
{
};
#endif

#include <iostream>
using namespace std;

#include "student.h"

int main()
{
  Student *amy = new Student;
  
  amy->set_firstname("Amy");
  amy->set_lastname("Chang");
  amy->showInfo();

  return 0;
}

all: person.o student.o
	g++ main.cpp person.o student.o -o main -std=gnu++11

person.o: person.cpp person.h
	g++ -c person.cpp
	
student.o: student.cpp student.h
	g++ -c student.cpp

clean:
	rm -f *.o main *.*~ *~