038. 객체지향의 특징

2022. 1. 7. 17:51·사소한 아이의 소소한 스킬/C#
반응형

이번엔 클래스에 대해 알아보자...

 

C#은 OOP(Object Oriented Programming) 언어이다.

 

C는 PP(Procedural Programing) 언어구요

 

다르게 말하면 C는 절차지향언어, C#은 객체지향 언어!

 

이렇게 말하면 또 쉽지...

 

절차지향은 위에서부터 차례대로 컴파일하므로 변수 선언, 함수 선언등을 언어의 상단에다가 해주어야 한다.

 

하지만 객체지향은 객체단위로 컴파일을 하므로 굳이 위쪽에 선언을 해주지 않아도 된다.

 

또한 객체지향은 캡슐화, 다형성, 클래스 상속등의 기능등의 기능을 제공하고, 이러한 기능때문에 객체지향을 많이 쓰게 된다. ( 그래도 C가 전세계에서 가장많이 쓰는언어지만.. 그만큼 빠름 )

 

여기서 클래스 상속과 캡슐화, 다형성에 대해서 알아보자.

 

내가 생각하기에 3가지는 다 연관되어있다고 생각되며

 

간단하게 3가지에 대해 정의해보고 가자.

 

캡슐화

단순하게 생각하자.. 변수와 함수가 함께 존재하는 것. 그것이 캡슐화다.

각기 다른 클래스에 변수 와 함수를 선언해두면 처리하기가 상당히 귀찮아 진다. 의미없는 클래스 선언도 여러가지 해야하고.. 이런것을 뭉쳐둔 클래스. 이것이 캡슐화다.

 

다형성

동일한 이름의 함수를 여러번 정의하여 사용할 수 있는 것이다.

예를 들어 Run이라는 함수가 존재하다면, 동일한 이름으로 생성할 수 없겠지만, 상속을 받아 진행한다면 Override 키워드를 이용해 다시 정의하여 다른 내용으로 사용할 수 있는 것.

 

상속

상속은 부모클래스에서 사용하는 함수를 자식클래스가 사용할 수 있도록 하는 것. 이 기능은 다형성과도 함게 쓰인다고 볼 수 있겠다.

 

그렇다면 예시를 시작해보자..

 

이론보단 예시가 이해가 확 가겠지...

 

캡슐화의 경우 이렇게 쓰일 수 있는 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public class CellPhone
    {
        public int Battery = 100;
 
        public void Use()
        {
            if (Battery > 0)
            {
                Battery--;
                Console.WriteLine("Use!!!");
            }
            else
            {
                Console.WriteLine("Battery End...");
            }
        }
    }
Colored by Color Scripter
cs

 

휴대폰을 사용하는데 배터리가 있어야 휴대폰을 사용할 것이다. 이렇게 배터리에 대한변수와 사용에 대한 함수가 같이 존재하는 것.. 이것이 캡슐화!

 

다형성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 public class CellPhone
    {
        public int Battery = 100;
 
        public void Use()
        {
            if (Battery > 0)
            {
                Battery--;
                Console.WriteLine("Use!!!");
            }
            else
            {
                Console.WriteLine("Battery End...");
            }
        }
    }
    public class HuaweiPhone : CellPhone
    {
        public void Use()
        {
            Console.WriteLine("Broken....");
        }
    }
 
    public class StartClass
    {
        public StartClass()
        {
            HuaweiPhone HHHH = new HuaweiPhone();
            HHHH.Use();
        }
    }
Colored by Color Scripter
cs

 

Use라는 동일한 이름의 함수를 재정의하여 사용하는 것.

 

이것이 다형성!!

 

상속

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
  public class CellPhone
    {
        public int Battery = 100;
 
        public void Use()
        {
            if (Battery > 0)
            {
                Battery--;
                Console.WriteLine("Use!!!");
            }
            else
            {
                Console.WriteLine("Battery End...");
            }
        }
    }
 
    public class SamsunPhone : CellPhone
    {
        public void Sound()
        {
            Console.WriteLine("Samsung Phone");
        }
    }
 
    public class ApplePhone : CellPhone
    {
        public void Sound()
        {
            Console.WriteLine("Apple Phone");
        }
    }
 
    public class StartClass
    {
        public StartClass()
        {
            SamsunPhone SSSS = new SamsunPhone();
            SSSS.Use();
            SSSS.Sound();
 
            ApplePhone AAAA = new ApplePhone();
            AAAA.Use();
            AAAA.Sound();
        }
    }
Colored by Color Scripter
cs

 

삼성폰과 애플폰은 Use라는 함수가 존재하지 않는다. 

하지만 위와같이 선언 후 Use함수와 Battery 변수에 접근할 수 가 있다.

이와 같은 기능이 상속..! 부모클래스의 정보를 가져다 쓸수있는!

 

이렇게 아주 가아아안단하게 알아봤다..

어려울게 없다... 단순하게 생각하면 된다!!

 

사실은 상속에 대한 기능 중 Interface를 알아보려다가... 상속에 대한 기본적인 것도 모르면 안될 것같아서...

 

이거먼저 적어 본다..!!

반응형
저작자표시 비영리 변경금지 (새창열림)
'사소한 아이의 소소한 스킬/C#' 카테고리의 다른 글
  • 041. json을 처리해보자
  • 039. 상속의 방법(virtual, abstract, interface)
  • 037. Partial Class
  • 036. Find Window
JOOJI
JOOJI
그냥 혼자좋아하는 것들 남기는 블로그....
  • JOOJI
    사소한프로그래머의 소소한행복
    JOOJI
  • 전체
    오늘
    어제
    • 분류 전체보기 (956) N
      • 사소한 아이의 소소한 일상 (245)
      • 사소한 아이의 소소한 먹거리 (43)
      • 사소한 아이의 소소한 정보 (75) N
      • 사소한 아이의 소소한 감사 (4)
      • 사소한 아이의 소소한 운동 (58) N
      • 사소한 아이의 소소한 여행 (40)
        • 2013_전주 (1)
        • 2014_독일 (13)
        • 2014_군산 (1)
        • 2015_제주도 (3)
        • 2015_서울모토쇼 (3)
        • 2015_진해 (1)
        • 2015_전주 (1)
        • 2016_여수 (1)
        • 2020_강릉 (1)
        • 2022_제주도 (4)
      • 사소한 아이의 소소한 강짱 (22)
        • 하트투하트 (10)
        • MAPS (1)
        • 화려한 유혹 (2)
        • 한여름의 추억 (2)
      • 사소한 아이의 TV (50)
        • Drama (9)
        • 예능 (32)
        • 사소한 아이의 다현 (9)
      • 사소한 아이의 소소한 스킬 (130)
        • Scaleform (2)
        • C# (74)
        • QT (3)
        • 알고리즘 (4)
        • Python (21)
        • PyQT5 (9)
        • C_C++ (2)
      • 사소한 아이의 소소한 축구 (283)
        • Korea (25)
        • Germany (45)
        • Bayern Munich (64)
        • Soccer_ETC (75)
        • Euro 2016 (12)
        • 친선경기 (3)
      • 사소한 아이의 소소한 생활정보 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
    • 관리
  • 링크

    • 독일여행
    • 레바티스토리
    • 프라치노 공간
    • 남성패션꿀템 블로그
  • 공지사항

  • 인기 글

  • 태그

    문제
    뮌헨
    python
    WPF
    c#
    분데스리가
    러닝
    회사밥
    바이에른 뮌헨
    독일
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
JOOJI
038. 객체지향의 특징
상단으로

티스토리툴바