프로그래밍 자습서 - 페이지 2

 

객체 지향 프로그래밍 7분 | 모쉬



객체 지향 프로그래밍 7분 | 모쉬

객체 지향 프로그래밍(OOP)은 캡슐화, 추상화, 상속 및 다형성이라는 네 가지 핵심 개념을 도입하여 소프트웨어 개발에 접근하는 방식을 혁신했습니다. 이러한 개념은 복잡한 시스템을 설계하고 구현하기 위한 강력하고 체계적인 프레임워크를 제공합니다.

캡슐화는 관련 변수와 함수를 개체라는 단위로 묶는 방법입니다. 객체 내에서 데이터와 해당 데이터에 대해 작동하는 메서드를 캡슐화하여 경계가 잘 정의된 독립적인 엔터티를 만듭니다. 예를 들어 자동차 개체에는 제조사, 모델 및 색상과 같은 속성과 시작, 중지 및 이동과 같은 메서드가 있을 수 있습니다. 이 캡슐화를 통해 자동차 개체를 단일 엔터티로 조작하고 상호 작용할 수 있으므로 외부 세계에서 내부 구현 세부 정보를 숨길 수 있습니다. 캡슐화는 코드 구성을 향상시킬 뿐만 아니라 코드 재사용성과 유지 관리성을 향상시킵니다.

추상화는 복잡한 구현 세부 정보를 숨기고 필수 기능이나 인터페이스만 노출하는 프로세스입니다. 이를 통해 실제 개체 또는 개념의 단순화된 표현을 만들 수 있습니다. DVD 플레이어가 몇 개의 버튼 뒤에 복잡한 내부 논리를 추상화하는 것처럼 OOP의 개체는 명확하고 간결한 인터페이스를 제공하면서 내부 작업을 숨길 수 있습니다. 복잡성을 추상화함으로써 인지 부하를 줄이고 코드를 더 이해하기 쉽게 만들 수 있습니다. 또한 추상화는 개체 내 변경의 영향을 격리하고 코드베이스의 다른 부분에 의도하지 않은 결과를 방지하는 보호막 역할을 합니다.

상속은 개체가 다른 개체의 속성과 동작을 상속할 수 있도록 하는 메커니즘입니다. 상속을 통해 객체의 계층 구조를 만들 수 있습니다. 여기서 보다 전문화된 객체는 보다 일반화된 객체로부터 특성을 상속받습니다. 이 계층 구조는 공통 특성 및 메서드를 기본 개체에서 정의하고 하위 클래스에서 상속할 수 있으므로 코드 재사용을 촉진합니다. 예를 들어 텍스트 상자, 드롭다운 목록 및 확인란과 같은 HTML 요소의 경우 모두 숨겨진 HTML 및 내부 HTML과 같은 공통 속성과 클릭 및 포커스와 같은 메서드를 공유합니다. 각 HTML 요소에서 이러한 속성과 메서드를 복제하는 대신 HTML 요소라는 일반 개체에서 한 번 정의하고 특정 요소가 상속하도록 할 수 있습니다. 상속은 중복을 제거하고 코드 유지 관리를 개선하며 유연하고 확장 가능한 코드 아키텍처를 허용합니다.

그리스어 "poly"(많은)와 "morph"(형태)에서 파생된 다형성(Polymorphism)은 객체가 다양한 형태나 동작을 취할 수 있는 능력을 나타냅니다. OOP에서 다형성은 다른 유형의 객체를 공통 유형의 객체로 취급할 수 있도록 합니다. 이 개념은 메서드 재정의 및 메서드 오버로드를 통해 달성됩니다. 메서드 재정의를 사용하면 하위 클래스가 해당 상위 클래스에서 상속된 메서드의 자체 구현을 제공할 수 있습니다. 예를 들어 페이지에서 다른 HTML 요소를 렌더링해야 할 수 있지만 각 요소에는 고유한 렌더링 동작이 있습니다. 각 개체에 렌더링 메서드를 구현하면 다형성을 달성하고 코드를 단순화하여 긴 if-else 또는 switch-case 문을 제거할 수 있습니다. 반면에 메서드 오버로딩을 사용하면 이름은 같지만 매개 변수 목록이 다른 여러 메서드가 클래스 내에서 공존할 수 있습니다. 다형성은 코드 유연성을 가능하게 하고 코드 가독성을 향상시키며 특정 구현이 아닌 "인터페이스 프로그래밍" 원칙을 촉진합니다.

캡슐화, 추상화, 상속 및 다형성을 활용함으로써 개체 지향 프로그래밍은 소프트웨어 개발에 구조화된 접근 방식을 제공합니다. 코드 구성, 재사용성, 유지 관리성, 모듈성 및 확장성과 같은 많은 이점을 제공합니다. 이러한 핵심 개념을 이해하고 효과적으로 적용하면 개발자는 시간이 지남에 따라 유연하고 확장 가능하며 이해하고 유지하기 쉬운 복잡한 시스템을 구축할 수 있습니다.

Object-oriented Programming in 7 minutes | Mosh
Object-oriented Programming in 7 minutes | Mosh
  • 2018.03.29
  • www.youtube.com
Get the COMPLETE COURSE: http://bit.ly/2keDCna4 pillars of object-oriented programming: encapsulation, abstraction, inheritance and polymorphism. Subscribe f...
 

객체 지향 프로그래밍 소개 - 단기집중과정


객체 지향 프로그래밍 소개 - 단기집중과정

객체 지향 프로그래밍 소개에 오신 것을 환영합니다. 이 과정에서는 객체 지향 프로그래밍의 개념과 네 가지 주요 원칙을 탐구합니다. 사전 프로그래밍 지식이 있다고 가정하지만, 프로그래밍이 처음이라면 설명에 링크된 프로그래밍 소개 비디오를 시청하는 것이 좋습니다.

객체 지향 프로그래밍을 사용하면 유사한 유형의 변수를 함께 그룹화하여 복잡한 프로그램을 더 쉽게 관리할 수 있습니다. 과거에는 byte, int, float, double, boolean 및 char와 같은 기본 데이터 유형이 단일 단순 값을 저장하는 데 사용되었습니다. 그러나 프로그램이 점점 더 복잡해짐에 따라 프로그래머는 관련 변수를 함께 그룹화할 방법이 필요했습니다.

이것은 다른 유형의 데이터 그룹화를 허용하는 C의 구조 개발로 이어졌습니다. 구조는 다양한 데이터를 저장할 수 있으므로 어레이보다 개선되었습니다. 그러나 구조는 내부에서 기능을 정의하는 기능이 부족했습니다.

객체 지향 프로그래밍의 출현과 함께 객체가 도입되었습니다. 개체는 개체의 템플릿 역할을 하는 클래스의 인스턴스입니다. 개체는 데이터를 저장하고 기능을 정의할 수 있습니다. 클래스는 객체의 공통 속성 및 동작을 정의하는 반면 객체는 고유한 데이터가 있는 특정 인스턴스를 나타냅니다.

캡슐화는 객체 지향 프로그래밍의 주요 원칙 중 하나입니다. 클래스 내에서 데이터와 메서드를 묶고 외부 액세스로부터 숨기는 작업이 포함됩니다. 다른 클래스는 getter 및 setter 메서드와 같은 클래스의 메서드를 통해서만 개체의 특성과 상호 작용할 수 있습니다. 캡슐화는 내부 속성에 대한 직접 액세스를 방지하여 데이터 제어를 유지하고 프로그램 복잡성을 줄이는 데 도움이 됩니다.

추상화는 불필요한 복잡성을 숨기면서 필수적인 세부 사항을 표시하는 데 초점을 맞추는 또 다른 원칙입니다. 프로그래밍에서 이것은 서로 다른 코드 섹션 간의 통신을 허용하는 클래스에 대한 인터페이스를 정의하는 것을 의미합니다. 메서드의 정확한 구현은 클래스 내에 숨겨져 있으며 외부 클래스는 정의된 인터페이스와만 상호 작용합니다. 이 접근 방식은 모듈식 프로그래밍을 가능하게 하고 여러 프로그래머 간의 공동 작업을 용이하게 합니다.

다음 섹션에서는 객체 지향 프로그래밍의 나머지 원칙인 상속과 다형성에 대해 논의할 것입니다. 이러한 원칙은 객체 지향 프로그래밍에서 코드의 유연성과 재사용성을 더욱 향상시킵니다.

여기까지가 객체 지향 프로그래밍에 대한 소개였습니다. 다음 섹션으로 이동하여 캡슐화에 대해 자세히 살펴보겠습니다.

  • 00:00:00 이 강의에서는 객체 지향 프로그래밍이 무엇이며 어떻게 작동하는지 살펴보겠습니다. 우리는 bytes, ints, floats, doubles 및 boolean과 같은 기본 데이터 유형이 작동하는 방식과 구조가 데이터를 보다 효율적으로 구성하고 저장하는 데 어떻게 도움이 되는지에 대해 논의할 것입니다. 또한 객체가 생성되는 방식과 객체가 서로 어떻게 관련되는지 살펴보겠습니다.

  • 00:05:00 개체 지향 프로그래밍은 관련 데이터와 함수를 함께 그룹화하는 방법을 제공하므로 모든 것을 별도로 코딩하지 않고도 복잡한 프로그래밍을 할 수 있습니다. 이 집중 과정에서는 OOP의 네 가지 주요 원칙 중 첫 번째인 캡슐화를 살펴보겠습니다. 이전 섹션의 체스 예제 컨텍스트에서 이것이 어떻게 사용되는지, 그리고 관련 속성을 쉽게 추적하고 관리하는 방법을 살펴보겠습니다.

  • 00:10:00 추상화는 클래스 사용자에게 중요한 세부 정보를 숨기는 아이디어인 반면 캡슐화는 다른 클래스의 데이터를 숨기는 방법입니다. 프로그래밍하는 동안 큰 그림에 집중하는 것이 어려울 수 있으므로 이러한 개념은 크고 복잡한 프로그램에서 작업할 때 중요합니다. 이 섹션에서는 객체 지향 프로그래밍의 네 번째 원칙인 추상화에 대해 설명합니다.

  • 00:15:00 개체 지향 프로그래밍에서 인터페이스는 두 클래스가 서로 통신하는 데 사용할 수 있는 미리 결정된 메서드 집합입니다. 이렇게 하면 프로그램의 다른 부분이 완전히 결합되는 것을 방지하고 통신 오류를 방지하는 데 도움이 됩니다. 상속은 한 클래스가 다른 클래스를 상속할 수 있도록 하는 원칙이며 이 비디오에서는 예를 살펴보겠습니다.

  • 00:20:00 개체 지향 프로그래밍에 대한 이 단기 집중 과정에서는 세 가지 주요 액세스 수정자(공용, 개인 및 보호)에 대해 설명합니다. 또한 다양한 형태를 취할 수 있는 방법을 설명하는 다형성에 대해서도 논의합니다. 마지막으로 클래스가 서로 관련되는 방법을 설명하는 상속의 원칙에 대해 설명합니다.

  • 00:25:00 다형성은 호출된 클래스 계층 구조에 따라 다른 형식을 취하는 메서드의 기능입니다. 이는 동적으로나 정적으로 모두 작동합니다. 오버로딩은 이름이 같은 메서드가 다른 효과를 가지도록 허용하지만 잠재적으로 구현하기 까다로울 수 있습니다.

  • 00:30:00 이 비디오는 객체 지향 프로그래밍(OOP)의 기초를 소개합니다. OOP에 대해 더 자세히 알고 싶다면 Crash Course 시리즈의 다른 비디오를 확인하십시오.
Intro to Object Oriented Programming - Crash Course
Intro to Object Oriented Programming - Crash Course
  • 2020.09.30
  • www.youtube.com
Learn the basics of object-oriented programming all in one video.✏️ Course created by Steven from NullPointer Exception. Check out their channel: https://www...
 

C++ OOP - 초보자를 위한 클래스 및 객체 소개



C++ OOP - 초보자를 위한 클래스 및 개체 소개

내 채널에 오신 것을 환영합니다, 여러분! 저는 Saldina이고 IT 및 프로그래밍 관련 동영상을 제작합니다. 이러한 주제에 관심이 있다면 제 채널을 구독하고 이 비디오에 좋아요를 눌러주세요.

이 비디오에서는 객체 지향 프로그래밍(OOP)의 세계를 탐구하고 싶습니다. 그렇다면 객체 지향 프로그래밍이란 정확히 무엇입니까? OOP를 사용하면 프로그래밍에서 속성과 동작으로 완성된 실제 개체를 나타낼 수 있습니다.

OOP의 두 가지 기본 개념은 클래스와 객체입니다. 둘의 차이점을 이해합시다. 클래스는 개체의 구조와 동작을 정의하는 템플릿 또는 청사진 역할을 합니다. 반면 객체는 클래스의 인스턴스입니다. 이를 설명하기 위해 과일을 나타내는 클래스를 고려하고 해당 클래스의 개체는 사과, 바나나 또는 복숭아일 수 있습니다. 마찬가지로 자동차를 나타내는 클래스에는 Volvo, Ford 또는 BMW와 같은 개체가 있습니다. 각 클래스에는 이름, 가격, 최대 속도, 색상과 같은 속성(속성)과 드라이브, 브레이크, 색상 변경과 같은 동작(방법)이 있습니다.

이제 "YouTubeChannel"이라는 예제 클래스를 만들어 보겠습니다. 클래스를 만들려면 "class" 키워드 뒤에 중괄호 안에 클래스 이름을 사용합니다. 또한 "공용" 액세스 수정자를 사용하여 클래스 외부에서 액세스할 수 있는 클래스 멤버를 만들어야 합니다. YouTubeChannel 클래스에서 채널 이름, 소유자 이름, 구독자 수, 게시된 비디오 제목 목록과 같은 속성을 정의합니다. 이러한 속성을 나타내기 위해 값을 할당합니다. YouTubeChannel 클래스의 개체를 만들고 점 표기법을 사용하여 해당 속성에 액세스합니다. 예를 들어 YouTube 채널의 이름을 "CodeBeauty"로 지정하고 소유자 이름을 "Saldina"로 지정할 수 있습니다.

구독자 수를 1800으로 설정하고 게시된 비디오 타이틀 3개를 목록에 추가할 수도 있습니다. 이러한 속성에 저장된 정보를 표시하기 위해 "cout"을 사용하여 인쇄합니다. 컬렉션인 게시된 비디오 타이틀 목록의 경우 루프를 사용하여 반복하고 각 비디오 타이틀을 인쇄할 수 있습니다. 프로그램을 실행하면 YouTube 채널의 세부 정보(채널 이름, 소유자 이름, 구독자 수 및 게시된 비디오 제목 목록)를 표시하는 출력을 볼 수 있습니다.

향후 비디오에서는 클래스 및 개체 작업에 보다 간소화된 접근 방식을 제공하는 생성자 및 클래스 메서드와 같은 주제를 다룰 것입니다.

이 비디오를 즐기셨기를 바랍니다! 도움이 되셨다면 엄지손가락을 치켜세우고 벨 아이콘을 클릭하여 제 채널 구독을 고려해 주세요. 더 흥미로운 콘텐츠를 기대해 주세요. 다음 영상에서 뵙겠습니다. 안녕!

C++ OOP - Introduction to classes and objects for beginners
C++ OOP - Introduction to classes and objects for beginners
  • 2020.08.02
  • www.youtube.com
Object-oriented programming is a programming paradigm that is based on the concept of objects from the real world, and it is used to represent those real wor...
 

C++ OOP(2020) - 생성자와 클래스 메서드란 무엇입니까? 그것들을 사용하는 방법?


C++ OOP(2020) - 생성자와 클래스 메서드란 무엇입니까? 그것들을 사용하는 방법?

안녕하세요 여러분, 제 채널에 오신 것을 환영합니다! 저는 Saldina이고 이 채널에서 프로그래밍 관련 동영상을 제작합니다. 관심이 있다면 구독을 고려하고 이 비디오에 좋아요를 누르세요. 이 비디오에서는 생성자와 클래스 메서드에 대해 이야기하고 싶습니다.

이전 자습서에서 YouTubeChannel이라는 클래스에 대한 코드를 작성했습니다. 여기에는 이름, 소유자 이름, 구독자 수 및 게시된 비디오 타이틀 목록의 네 가지 공용 속성이 있습니다. 해당 클래스의 개체를 만들고 해당 속성에 값을 할당했습니다. 이제 이 접근 방식의 문제를 해결해 보겠습니다. 다른 YouTube 채널 개체를 만들려면 코드를 복사하여 붙여넣고 적절하게 변경해야 합니다. 이는 "반복 금지" 원칙에 위배됩니다. 이 문제를 해결하기 위해 생성자와 클래스 메서드를 사용할 수 있습니다.

생성자는 객체가 생성될 때 호출되는 특수 메서드입니다. 클래스와 이름이 같고 반환 유형이 없습니다. YouTubeChannel 클래스의 생성자를 만들어 보겠습니다. 이름과 소유자 이름의 두 가지 매개변수를 받습니다. 생성자 내에서 이러한 매개 변수를 해당 속성에 할당합니다. 생성자를 생성한 후 필요한 값을 전달하여 객체를 생성하는 데 사용할 수 있습니다. 이렇게 하면 개체를 만들기 위해 코드를 반복할 필요가 없습니다. 또한 클래스 메서드를 사용하여 채널에 대한 정보를 표시하는 코드를 반복하지 않도록 할 수 있습니다.

채널 정보를 쓰는 getInfo라는 클래스 메서드를 만들어 봅시다. 정보를 표시하기 위한 코드를 이 메서드로 옮기고 두 개체에 사용할 수 있습니다. getInfo 메서드를 호출하려면 개체 이름 뒤에 점과 메서드 이름을 사용하여 개체에서 호출할 수 있습니다. 이렇게 하면 코드를 복제하지 않고 두 채널에 대한 정보를 모두 표시할 수 있습니다.

생성자와 클래스 메서드를 사용하여 보다 깨끗하고 효율적인 코드를 얻을 수 있습니다. main 함수는 읽기 및 유지 관리가 더 쉬워집니다. 생성자는 개체 속성의 초기화를 처리하는 반면 클래스 메서드는 클래스의 일반적인 동작을 캡슐화합니다.

이 비디오가 도움이 되었기를 바랍니다. 재미있게 보셨다면 엄지손가락을 치켜세우고 제 채널을 구독해 주세요. 최신 정보를 받으려면 벨 아이콘을 누르는 것을 잊지 마세요. 다음 영상에서 뵙겠습니다. 안녕!

C++ OOP (2020) - What are constructors and class methods? How to use them?
C++ OOP (2020) - What are constructors and class methods? How to use them?
  • 2020.08.09
  • www.youtube.com
In this video, I'm explaining when, why, and how are constructors and class methods used.📚 Learn how to solve problems and build projects with these Free E-...
 

C++ OOP - 프로그래밍에서 캡슐화란 무엇입니까?



C++ OOP - 프로그래밍에서 캡슐화란 무엇입니까?

안녕하세요 여러분! 프로그래밍 관련 채널에 오신 것을 환영합니다. 프로그래밍에 관심이 있다면 구독을 고려하고 이 비디오에 좋아요를 눌러주세요. 이 비디오에서는 캡슐화에 대해 설명합니다.

먼저 이전 비디오의 코드를 빠르게 검토해 보겠습니다. 이름, 소유자 이름, 구독자 수 및 게시된 비디오 제목 목록과 같은 공개 속성이 있는 YouTubeChannel 클래스가 있습니다. YouTubeChannel 생성자와 getInfo 메서드도 있습니다.

이제 캡슐화에 집중하겠습니다. 캡슐화 원칙에 따르면 속성은 비공개여야 하며 해당 값은 클래스에서 노출된 메서드를 통해 액세스하고 수정해야 합니다. 이렇게 하면 제어되고 적절한 데이터 조작이 보장됩니다. 캡슐화의 필요성을 설명하기 위해 문제를 소개하겠습니다. 현재는 구독자 수에 직접 값을 부여할 수 있으며, 이는 구독자가 자연스럽게 증가하거나 감소하는 방식이 아닙니다. 대신 구독 및 구독 취소와 같은 메서드를 제공하여 이러한 변경 사항을 제어해야 합니다.

사용자에게 속성을 숨기기 위해 비공개로 설정합니다. 액세스 수정자를 비공개로 변경하여 이러한 속성에 대한 직접 액세스를 제한합니다. 그러나 개인 멤버는 이제 클래스 외부에서 액세스할 수 없으므로 오류가 발생합니다. 사용자가 구독자 수를 수정할 수 있도록 구독 및 구독 취소라는 두 가지 메서드를 만듭니다. subscribe 메소드는 구독자 수를 증가시키고 unsubscribe 메소드는 감소시킵니다. 이러한 메서드를 사용하여 사용자는 클래스와 상호 작용하고 메서드에서 정의한 규칙을 따를 수 있습니다.

구독 취소 방법에 문제가 발생했습니다. 현재 카운트가 음수가 될 수 있습니다. 이 문제를 해결하려면 감소하기 전에 카운트가 0보다 큰지 확인하는 검사를 추가해야 합니다. 또한 현재 액세스할 수 없는 게시된 비디오 타이틀이라는 또 다른 사유 재산이 있습니다. 이 속성에 대한 액세스를 제공하기 위해 publishVideo라는 메서드를 만듭니다. 이 메서드는 문자열 매개변수(비디오 제목)를 가져와 push_back 메서드를 사용하여 게시된 비디오 제목 목록에 추가합니다.

마지막으로 사용자가 클래스와 상호 작용하고 전용 속성을 조작할 수 있는 메서드를 공개했습니다. 이름 및 소유자 이름 속성에 대한 액세스를 추가로 제어하기 위해 getter 및 setter 메서드를 만들 수 있습니다.

캡슐화를 요약하면 다음과 같습니다.

  • 속성을 비공개로 설정하여 직접 액세스를 제한합니다.
  • 개인 속성을 수정하는 공용 메서드를 제공합니다.
  • 메서드에 정의된 규칙을 따라 적절한 데이터 조작을 보장합니다.

getter 및 setter 메서드를 구현하는 코드가 있는 경우 검토를 위해 주석 섹션에서 자유롭게 공유하십시오.

이 영상이 마음에 드셨다면 좋아요, 제 채널 구독, 벨 아이콘을 클릭해 향후 영상에 대한 알림을 받으세요. 시청해주셔서 감사하고 다음 영상에서 뵙겠습니다! 안녕!

C++ OOP - What is encapsulation in programming?
C++ OOP - What is encapsulation in programming?
  • 2020.08.17
  • www.youtube.com
Encapsulation is one of the most important characteristics of Object-Oriented Programming. Encapsulation helps in data hiding and is used to prevent direct a...
 

C++ OOP - 프로그래밍에서 상속이란 무엇입니까?



C++ OOP - 프로그래밍에서 상속이란 무엇입니까?

안녕하세요 여러분, 프로그래밍 관련 영상을 만드는 Saldina입니다. 관심이 있으시면 내 채널 구독을 고려하십시오. 또한 이 비디오에 엄지손가락을 치켜세웁니다. 이 비디오에서는 캡슐화에 대해 논의하고 싶습니다.

이 과정의 이전 비디오에서 몇 가지 코드를 작성했습니다. 당신이 그들을 보지 못했다면, 그들을 확인하십시오. 동영상 설명에 링크를 제공하겠습니다. 이해를 돕기 위해 코드를 빠르게 살펴보겠습니다. 이름, 소유자 이름, 구독자 수, 게시된 비디오 제목 목록의 네 가지 공개 속성이 있는 YouTubeChannel 클래스를 만들었습니다. YouTubeChannel 생성자와 getInfo 메서드도 있습니다. 여기에서 생성자 코드를 볼 수 있습니다.

기본 함수에서 YouTubeChannel 클래스의 개체를 만들고 이름 및 소유자 이름에 대한 값을 할당했습니다. 게시된 동영상 목록에 3개의 동영상도 추가했습니다. 마지막으로 채널에 대한 정보를 출력했습니다. 이제 캡슐화에 대해 알아보겠습니다. 이 원칙은 이러한 속성이 공개가 아니라 비공개여야 함을 시사합니다. 이러한 속성에 저장된 데이터는 사용자에게 노출되는 메서드를 통해서만 수정되어야 합니다. 이러한 방법의 규칙에 따라 사용자는 속성 값을 변경할 수 있습니다.

캡슐화가 필요한 이유를 이해하기 위해 문제를 생각해 봅시다. 이 YouTube 채널의 구독자 수를 백만으로 설정하면 어떻게 되나요? 이것은 허용되어서는 안됩니다. 코드를 실행하면 이제 채널 구독자가 백만 명이라는 것을 알 수 있습니다. 그러나 구독자를 확보하려면 자연스럽게 사용자가 구독 및 구독 취소 메소드를 호출해야 합니다. 이러한 방법을 사용하여 가입자 수를 늘리거나 줄입니다. 이러한 속성을 사용자에게 숨기기 위해 공개 대신 비공개로 설정합니다. 이는 클래스 자체 내에서만 액세스할 수 있음을 의미합니다. 사용자가 구독자 수를 수정할 수 있도록 구독 및 구독 취소라는 두 가지 방법을 만듭니다. subscribe 메소드는 구독자 수를 증가시키고 unsubscribe 메소드는 감소시킵니다.

구독자를 늘리거나 줄이려면 이제 이러한 메서드를 호출해야 합니다. 예를 들어 youtubeChannel.subscribe()는 3개의 구독을 시뮬레이션하기 위해 3번 사용됩니다. youtubeChannel.unsubscribe()를 호출한 다음 getInfo를 호출하면 두 명의 구독자가 있음을 알 수 있습니다. 또한 게시된 비디오 제목 속성이 이제 비공개이고 액세스할 수 없기 때문에 컴파일 타임 오류가 발생합니다. 이를 해결하기 위해 게시된 비디오 제목 목록에 비디오 제목을 추가하는 publishVideo라는 메서드를 만듭니다. 이 메서드는 사용자가 비디오 제목을 지정할 수 있도록 제목 매개 변수를 사용합니다. youtubeChannel.publishVideo("Title")를 호출하여 목록에 동영상을 추가합니다.

요약하면 캡슐화에는 속성을 비공개로 만들고 이를 수정할 수 있는 공용 메서드를 제공하는 작업이 포함됩니다. Getter 및 setter 메서드를 사용하여 특정 속성에 액세스하고 변경할 수 있습니다. 검토를 위해 주석에서 getter 및 setter 메서드 구현을 자유롭게 공유하십시오.

이 비디오가 도움이 되셨다면 좋아요를 누르고 제 채널을 구독하고 벨 아이콘을 클릭하세요. 더 많은 동영상을 기대해 주세요. 다음에 만나요! 안녕!

C++ OOP - What is inheritance in programming?
C++ OOP - What is inheritance in programming?
  • 2020.08.20
  • www.youtube.com
Inheritance is one of the most important characteristics of Object-Oriented Programming. Inheritance is a process in which one class (aka derived class/child...
 

C++ OOP - 프로그래밍에서 다형성이란 무엇입니까? (간단한 예)



C++ OOP - 프로그래밍에서 다형성이란 무엇입니까? (간단한 예)

안녕하세요 여러분, 제 채널에 오신 것을 환영합니다. 제 이름은 Saldina이고 IT 및 프로그래밍 관련 동영상을 제작합니다. 관심이 있으시면 제 채널을 구독하고 이 동영상에 좋아요를 눌러주세요. 이 특정 비디오에서는 다형성에 대해 이야기하고 싶습니다.

다형성(Polymorphism)은 객체가 여러 형태를 가질 수 있는 능력을 의미합니다. 이는 동일한 기본 클래스에서 상속되는 둘 이상의 개체를 가질 수 있음을 의미합니다. 이러한 개체는 이름은 같지만 구현이 다른 메서드를 가질 수 있으므로 동작이 달라집니다. 이전 과정에서 작성한 몇 가지 코드를 살펴보겠습니다. 이름, 구독자 수, 게시된 비디오 제목과 같은 비공개 속성을 사용하여 "YouTubeChannel"이라는 클래스를 만들었습니다. 또한 "소유자 이름"이라는 보호 속성도 있습니다. 또한 공개 메서드, 생성자, "getInfo" 메서드 및 "구독/구독 취소" 메서드가 있습니다.

다음으로 기본 클래스에서 상속되는 "CookingYouTubeChannel"이라는 특정 유형의 YouTube 채널이 있습니다. 자체 생성자와 요리 채널에 특정한 "practice"라는 추가 메서드가 있습니다. 이제 노래에 대한 YouTube 채널에 대해 "SingersYouTubeChannel"이라는 또 다른 파생 클래스를 만들고 싶습니다. 이 클래스에도 "연습" 방법이 있지만 요리 채널과 구현이 다릅니다. 가수들은 노래 연습, 새로운 노래 배우기, 심지어 춤까지 연습했습니다.

다형성을 보여주기 위해 요리와 가수의 YouTube 채널 인스턴스를 만듭니다. 그런 다음 각 채널에서 "연습" 방법을 호출합니다. 각 구현이 채널 유형에 따라 호출되는 것을 볼 수 있습니다. 또한 콘텐츠 품질을 추적하기 위해 "contentQuality" 속성을 도입했습니다. "연습" 방법을 호출할 때마다 콘텐츠 품질이 향상됩니다. 또한 콘텐츠 품질 등급을 확인하고 등급에 따라 메시지를 출력하는 "checkAnalytics"라는 메서드를 추가합니다.

다형성을 더 보여주기 위해 기본 클래스에 대한 포인터를 사용하여 파생 클래스의 개체를 가리킵니다. 이 포인터에 요리와 가수의 YouTube 채널 주소를 할당합니다. 이러한 포인터를 사용하여 각 채널에 대해 "checkAnalytics" 메서드를 호출하여 다형성을 통해 기본 클래스 포인터를 사용하여 파생 클래스 메서드를 호출할 수 있음을 보여줍니다.

이 영상이 즐거우셨기를 바랍니다. 그렇다면 엄지손가락을 치켜세우고 제 채널 구독을 고려해 주세요. 향후 동영상에 대한 알림을 받으려면 벨 아이콘을 클릭하는 것을 잊지 마세요. 감사합니다. 다음 동영상에서 뵙겠습니다. 안녕!

C++ OOP - What is polymorphism in programming? (simple example)
C++ OOP - What is polymorphism in programming? (simple example)
  • 2020.09.01
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
 

가상 기능, 순수 가상 기능 및 OOP의 추상 클래스 간의 관계 설명



가상 기능, 순수 가상 기능 및 OOP의 추상 클래스 간의 관계 설명

이번 영상에서는 가상함수, 순수가상함수, 추상클래스의 목적과 관계에 대해 설명드리겠습니다. 이 객체 지향 프로그래밍 플레이리스트를 계속하게 되어 기쁩니다. 향후 비디오에서 보고 싶은 질문이나 주제가 있으면 아래에 의견을 남겨주십시오. 이제 가상 함수에 대해 자세히 살펴보겠습니다.

가상 함수는 기본 클래스에 정의된 함수이며 파생 클래스에서 재정의할 수 있습니다. 가상 함수의 주요 목적은 런타임 다형성을 활성화하는 것입니다. 기본 클래스 포인터 또는 참조를 사용하여 가상 함수를 호출하면 해당 함수의 가장 파생된 버전이 실행됩니다. 파생 클래스에 자체 구현이 있는 경우 해당 버전이 실행됩니다. 그렇지 않으면 기본 클래스의 구현이 사용됩니다.

Visual Studio에서 예제를 살펴보겠습니다. 메시지를 출력하는 "makeSound"라는 가상 함수가 있는 "Instrument" 클래스를 만듭니다. 그런 다음 자체 구현으로 "makeSound" 함수를 재정의하는 "Accordion"이라는 파생 클래스를 만듭니다. 기본 클래스 포인터를 사용하여 함수를 호출하면 파생 버전이 실행되는 것을 볼 수 있습니다. 기본 클래스 함수에 "virtual" 키워드를 추가하면 가장 많이 파생된 버전이 호출됩니다.

다음으로 순수 가상 함수와 추상 클래스에 대해 살펴보겠습니다. 순수 가상 함수는 기본 클래스에 구현이 없는 가상 함수입니다. 파생 클래스가 자체 구현을 제공하도록 합니다. 가상 함수를 "0과 같음"으로 설정하여 순수 가상 함수를 만듭니다. 이것은 기본 클래스를 인스턴스화할 수 없는 추상 클래스로 만듭니다. 파생 클래스는 순수 가상 함수를 구현해야 합니다. "Instrument" 클래스에서 파생된 "Piano" 클래스를 만듭니다. 순수한 가상 함수를 구현하지 않고 "Piano" 유형의 개체를 만들려고 하면 오류가 발생합니다. 그러나 일단 "Piano" 클래스에서 함수를 구현하면 성공적으로 객체를 생성하고 함수를 호출할 수 있습니다.

마지막으로 가상 함수의 다형성 동작을 살펴보겠습니다. 하나는 "Accordion" 개체를 가리키고 다른 하나는 "Piano" 개체를 가리키는 두 개의 악기 포인터가 있습니다. 계측기 포인터의 배열을 생성하여 기본 클래스 포인터를 사용하여 "makeSound" 함수를 호출하면 함수의 파생 버전이 실행된다는 것을 입증할 수 있습니다.

이 설명이 가상 함수, 순수 가상 함수 및 추상 클래스를 더 잘 이해하는 데 도움이 되기를 바랍니다. 더 궁금한 점이 있으면 아래 의견에 알려주십시오. 시청해 주셔서 감사합니다. 구독도 잊지 마세요!

Relationship between Virtual Functions, Pure Virtual Functions and Abstract Classes in OOP explained
Relationship between Virtual Functions, Pure Virtual Functions and Abstract Classes in OOP explained
  • 2021.04.15
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
 

실제 예제와 코드로 추상화 설명! - C++ OOP 과정



실제 예제와 코드로 추상화 설명! - C++ OOP 과정

이 비디오에서는 객체 지향 프로그래밍에서 중요한 추상화 개념에 대해 설명합니다. 추상화가 무엇인지 설명하고 C++ 프로그래밍에서 추상화를 구현하고 사용하는 방법을 보여드리겠습니다. 그러나 시작하기 전에 더 적은 코드로 여러 플랫폼을 위한 빠른 앱 개발을 가능하게 하는 강력한 IDE인 C++ Builder를 소개하고 싶습니다. 다양한 데이터베이스에 원활하게 연결되며 VCL 및 FireMonkey 프레임워크와 같은 강력한 라이브러리를 포함합니다. 설명에 있는 링크를 사용하여 무료로 시작하세요.

프로그래밍에서 추상화는 복잡하고 중요하지 않은 세부 정보를 숨기면서 중요한 정보를 표시하는 행위를 말합니다. 추상화를 더 잘 이해하기 위해 실제 사례인 커피 머신을 생각해 봅시다. 커피머신을 사용할 때는 커피와 물을 넣고 버튼만 누르면 커피가 만들어집니다. 기계의 내부 프로세스는 복잡하지만 추상화되어 간단한 절차 뒤에 숨겨져 있습니다. 이 추상화를 통해 사용자는 복잡한 작동 방식을 이해하지 않고도 기계를 쉽게 작동할 수 있습니다. 마찬가지로 프로그래밍에서는 추상화를 사용하여 복잡한 세부 정보를 숨기고 단순화된 인터페이스를 제공합니다.

추상화의 또 다른 주요 측면은 추상화된 요소가 자주 변경되지 않거나 적어도 최종 사용자에게는 변경되지 않는 것처럼 보인다는 것입니다. 즉, 사용자에게 노출된 인터페이스를 변경하지 않는 한 내부 구현을 수정할 수 있습니다. 예를 들어 신생 회사가 더 효율적인 커피 머신을 개발하면 내부 구성 요소를 변경하여 에너지 소비를 줄이고 커피를 더 빨리 만들고 소음을 줄일 수 있습니다. 사용자가 여전히 커피와 물을 넣고 버튼을 눌러야 하는 한 인터페이스는 동일하게 유지되며 사용자는 기계를 작동하는 새로운 방법을 배울 필요가 없습니다. 추상화를 통한 행동의 표준화는 신생 회사가 기존 사용자의 기대치를 기반으로 구축할 수 있도록 합니다.

프로그래밍에서 복잡한 세부 정보를 숨기고 다른 개발자를 위한 단순화된 인터페이스를 제공하기 위해 추상화 계층을 만들 수 있습니다. 예를 들어 다양한 복잡한 기능을 가진 클래스를 생성하는 경우 기본 복잡성을 숨기는 추상화 계층을 제공할 수 있습니다. 그러면 다른 개발자가 구현 세부 정보를 알 필요 없이 클래스의 간단한 인터페이스를 활용할 수 있습니다. C++에서는 최소한 하나의 순수 가상 함수를 포함하는 추상 클래스를 사용하여 추상화를 구현합니다. 이러한 추상 클래스는 다른 클래스가 구현해야 하는 계약 또는 인터페이스를 정의합니다.

이를 설명하기 위해 "스마트폰"이라는 추상 클래스를 만들어 보겠습니다. 모든 스마트폰이 가져야 할 중요한 기능인 "셀카 찍기"라는 공개 기능을 선언합니다. 이 함수를 "= 0" 구문을 사용하여 순수 가상 함수로 만듦으로써 클래스를 추상 클래스로 변환합니다. 추상 클래스의 인스턴스를 직접 만들 수는 없지만 이에 대한 포인터는 만들 수 있습니다. 스마트폰이 되려는 모든 클래스는 이 추상 클래스를 상속하고 순수 가상 기능의 자체 구현을 제공해야 합니다.

예를 들어, "스마트폰" 클래스에서 상속되는 "안드로이드" 클래스를 생성해 봅시다. 이 클래스에서는 Android 기기에 고유한 복잡한 논리로 "Take a selfie" 기능을 구현합니다. 마찬가지로 "스마트폰"에서 상속하고 "셀카 찍기" 기능의 자체 구현을 제공하는 "iPhone" 클래스를 만들 수 있습니다. 각 클래스는 고유한 구현을 가질 수 있지만 스마트폰을 사용하는 사람의 관점에서 프로세스는 동일하게 유지됩니다.

"Smartphone" 클래스를 통해 구현된 추상화를 통해 Android 또는 iPhone 클래스에서 작업하는 개발자는 다른 클래스의 논리에 대해 알 필요 없이 특정 구현 세부 정보에 집중할 수 있습니다. 필요한 기능이 구현되도록 추상 클래스에서 정의한 계약만 준수하면 됩니다. 추상화를 사용하여 관심사를 분리하고 코드 사용을 단순화하며 모듈식 개발을 용이하게 합니다. 추상화를 통해 표준화된 인터페이스를 만들고 복잡한 구현을 숨길 수 있으므로 더 많은 유지 관리가 가능합니다.

추상화를 통해 표준화된 인터페이스를 만들고 복잡한 구현을 숨길 수 있으므로 보다 유지 관리하기 쉽고 유연한 코드가 생성됩니다. 다른 클래스에서 확장하고 구현할 수 있는 추상 클래스에 기능을 캡슐화하여 코드 재사용 및 모듈식 개발을 촉진합니다. 추상 클래스 외에도 C++는 인터페이스라는 추상화를 위한 또 다른 메커니즘을 제공합니다. 인터페이스는 인터페이스를 준수하려는 모든 클래스에서 구현해야 하는 메서드 계약을 정의하는 순전히 추상 클래스입니다. 이를 통해 구성 요소 간의 더 큰 추상화 및 느슨한 결합이 가능합니다.

요약하면 객체 지향 프로그래밍의 추상화는 복잡한 세부 사항을 숨기고 단순화된 인터페이스를 제공하는 프로세스입니다. 이를 통해 개발자는 근본적인 복잡성을 추상화하면서 특정 구현에 집중할 수 있습니다. 추상 클래스와 인터페이스는 C++에서 추상화를 구현하기 위한 기본 도구입니다. 추상화를 사용하면 보다 모듈화되고 재사용 가능하며 유지 관리 가능한 코드를 만들 수 있습니다.

Abstraction explained with real-life examples and code! - C++ OOP Course
Abstraction explained with real-life examples and code! - C++ OOP Course
  • 2021.04.21
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
 

C++ 연산자 오버로딩 초보자에서 고급으로(자세한 설명)



C++ 연산자 오버로딩 초보자에서 고급으로(자세한 설명)

안녕하세요 여러분, 제 채널에 오신 것을 환영합니다. 한창 작업중이라 영상을 찍을 생각이 없었는데 너무 재밌는 프로젝트를 하고 있어서 보여드리면 안될까 생각이 들었습니다. 저는 현재 수천 개의 파일과 수백만 줄의 코드가 있는 대규모 프로젝트를 진행하고 있습니다. 완료하는 데 보통 10~15분이 걸리는 내 코드를 분석하려고 했습니다. 그래서 분석을 기다리는 동안 연산자 오버로딩에 대해 알려드리겠습니다.

제가 사용하는 분석기는 PDS Studio라고 하는데 설명에 있는 링크를 이용하시면 무료로 받으실 수 있습니다. PDS Studio를 사용하여 버그를 찾고 코드를 최적화하는 방법을 보여드리겠습니다. PDS Studio를 다운로드하면 분석할 코드가 필요합니다. 내 작업에서 솔루션을 얻었지만 비공개 계약으로 인해 코드를 보여줄 수 없습니다. 하지만 분석 결과는 영상 후반부에 보여드리겠습니다.

PDS Studio를 사용하여 코드를 분석하려면 확장 탭을 클릭하고 PDS Studio를 선택해야 합니다. 그런 다음 분석을 위해 전체 솔루션을 선택합니다. 분석에 시간이 좀 걸리므로 빈 프로젝트로 전환하고 그동안 연산자 오버로딩에 대해 알려드리겠습니다.

연산자 오버로딩을 사용하면 특정 연산자가 특정 데이터 유형과 함께 작동하는 방식을 정의할 수 있습니다. 예를 들어 더하기 연산자는 숫자와 함께 사용할 때와 사용자 정의 데이터 유형과 함께 사용할 때 다르게 동작합니다. 이 동작을 정의하는 연산자 함수를 만들 수 있습니다. 두 가지 사용자 정의 데이터 유형을 추가하는 예를 사용하여 이 개념을 설명하겠습니다.

C++에서는 "operator" 키워드 뒤에 오버로드하려는 연산자를 사용하여 연산자 함수를 만들 수 있습니다. 예를 들어, "operator+" 함수를 생성하여 더하기 연산자를 오버로드할 수 있습니다. "name"과 "subscribersCount"라는 두 가지 속성이 있는 "YouTubeChannel"이라는 구조를 생성하여 이를 시연해 보겠습니다. 또한 이 구조에 대한 생성자를 생성합니다.

YouTubeChannel 유형에 대한 삽입 연산자(<<)를 오버로드하려면 "연산자<<" 함수를 정의해야 합니다. 이 함수는 "ostream" 유형의 개체(예: "cout")와 "YouTubeChannel" 유형의 개체라는 두 가지 매개 변수를 사용합니다. 불필요한 복사를 피하기 위해 이러한 매개변수를 참조로 전달합니다.

"operator<<" 함수 내에서 "ostream" 개체를 사용하여 YouTubeChannel에 대한 정보를 출력합니다. 이 경우 이름과 구독자 수를 인쇄합니다. 삽입 연산자를 오버로드하여 "cout" 명령을 사용하여 YouTubeChannel 개체를 인쇄할 수 있습니다.

오버로드된 삽입 연산자를 사용하려면 간단히 "cout << youtubeChannelObject"라고 쓰면 됩니다. 이것은 "cout"을 사용하여 다른 유형을 인쇄하는 방법과 유사하게 작동합니다. 일반 함수처럼 "cout" 객체와 YouTubeChannel 객체를 매개변수로 전달하여 연산자 함수를 직접 호출할 수도 있습니다.

연산자마다 오버로딩 방법이 다릅니다. 삽입 연산자는 "연산자<<" 함수를 사용하여 오버로드되지만 더하기, 빼기, 보다 큼, 보다 작음, 같음 등과 같은 다른 연산자에는 고유한 연산자 기능이 있습니다.

이것이 이 비디오의 전부입니다. 연산자 오버로딩에 대한 이 소개가 도움이 되었기를 바랍니다. C++에서 오버로드할 수 있는 모든 연산자 목록에 대한 설명을 확인하십시오. 분석이 완료되면 결과를 보여드리겠습니다. 질문이 있으시면 의견에 자유롭게 질문하십시오. 시청 해주셔서 감사합니다!

C++ Operator Overloading beginner to advanced (in-depth explanation)
C++ Operator Overloading beginner to advanced (in-depth explanation)
  • 2021.06.30
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...