10. Abstract & Concrete Class
HomeDesign PatternC++

10. Abstract & Concrete Class

Relationship between abstract class and concrete class

07. Prototype Pattern
06. LSP
05. Virtual Function

DesignPattern

Usage

  • Forces a concrete class to implement its own behavior by inheriting a pure virtual function

Explain

Pure virtual function is a virtual function which has only prototype, but no definition. Instead of function body, it has "= 0" in prototype.

Abstract class is a class having pure virtual functions. Because a pure virtual function has no implementation, abstract class cannot be an instance. If someone does, compiler gives an error.

Instead of abstract class, concrete class inherits abstract class and implements its behavior by overriding pure virtual functions. If the pure virtual function is not implemented(=overridden) in concrete class, a compiler also gives an error. Code 1 shows how to use a pure virtual function and abstract and concrete classes.

// 01_C_PureVirtualFunction.cpp
#include <iostream>
using namespace std;

// Abstract class
class BaseClass
{
public:
    virtual void foo() = 0;    // Pure virtual function
};

// Concrete class
class DerivedClass : public BaseClass
{
public:
 void foo() {}
};

int main()
{
    // BaseClass b;            // Abstract class cannot be an instance
    DerivedClass d;

    d.foo();
}
// Compile: clang++ -std=c++14
//              -o 01_C_PureVirtualFunction 01_C_PureVirtualFunction.cpp
C++
Code 1. Abstract and concrete class
Foo

Abstract class defines interface, and helps to adapt LSP. Several concrete classes inherit an abstract class and override functions to have its own behavior. So, by using pointer of abstract class, all concrete class instances can be controlled.

Summary

  • Abstract class has more than one pure virtual function.
virtual void draw() = 0;
C++
  • A pure virtual function should be overridden in a concrete classes, and their instances can be controlled by the pointer of abstract class.
Name

0 weights,1,abstract class,1,active function,3,adam,2,Adapter,1,affine,2,argmax,1,back propagation,3,binary classification,3,blog,2,Bucket list,1,C++,11,Casting,1,cee,1,checkButton,1,cnn,3,col2im,1,columnspan,1,comboBox,1,concrete class,1,convolution,2,cost function,6,data preprocessing,2,data set,1,deep learning,31,Design Pattern,12,DIP,1,django,1,dnn,2,Don't Repeat Your code,1,drop out,2,ensemble,2,epoch,2,favicon,1,fcn,1,frame,1,gradient descent,5,gru,1,he,1,identify function,1,im2col,1,initialization,1,Lab,9,learning rate,2,LifeLog,1,linear regression,6,logistic function,1,logistic regression,3,logit,3,LSP,1,lstm,1,machine learning,31,matplotlib,1,menu,1,message box,1,mnist,3,mse,1,multinomial classification,3,mutli layer neural network,1,Non Virtual Interface,1,normalization,2,Note,21,numpy,4,one-hot encoding,3,OOP Principles,2,Open Close Principle,1,optimization,1,overfitting,1,padding,2,partial derivative,2,pooling,2,Prototype,1,pure virtual function,1,queue runner,1,radioButton,1,RBM,1,regularization,1,relu,2,reshape,1,restricted boltzmann machine,1,rnn,2,scrolledText,1,sigmoid,2,sigmoid function,1,single layer neural network,1,softmax,6,softmax classification,3,softmax cross entropy with logits,1,softmax function,2,softmax regression,3,softmax-with-loss,2,spinBox,1,SRP,1,standardization,1,sticky,1,stride,1,tab,1,Template Method,1,TensorFlow,31,testing data,1,this,2,tkinter,5,tooltip,1,Toplevel,1,training data,1,vanishing gradient,1,Virtual Copy Constructor,1,Virtual Destructor,1,Virtual Function,1,weight decay,1,xavier,2,xor,3,
ltr
item
Universe In Computer: 10. Abstract & Concrete Class
10. Abstract & Concrete Class
Relationship between abstract class and concrete class
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXvUavVsX4rYm8cgKQ8rzps7pHmmEVtkIb66G2o5KZFCfjvO96SCEUdaw_DMYzSbdVrB8XvnaKN8ljEE7EBjutI2XvsBL-2BLdijjJRIpAOEpvlhOW-hfWP3ir3wbE488AwdFEu7WKbLgO/s0/
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXvUavVsX4rYm8cgKQ8rzps7pHmmEVtkIb66G2o5KZFCfjvO96SCEUdaw_DMYzSbdVrB8XvnaKN8ljEE7EBjutI2XvsBL-2BLdijjJRIpAOEpvlhOW-hfWP3ir3wbE488AwdFEu7WKbLgO/s72-c/
Universe In Computer
https://kunicom.blogspot.com/2018/04/10-abstract-concrete-class.html
https://kunicom.blogspot.com/
https://kunicom.blogspot.com/
https://kunicom.blogspot.com/2018/04/10-abstract-concrete-class.html
true
2543631451419919204
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago 1 minutes ago 1 hour ago 1 hours ago Yesterday 1 days ago 1 weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy