객체 지향이 너무 어려운데 원래 이렇게 방대하게 긴 코딩으로 설명하면서 추상적으로 설명하나요? 아니면 책이 원래 이런가요...
진짜 벽너무 느껴지는데, 객체 지향이 원래 이리 어렵나요? 자바도 이렇게 어렵나요?,,
댓글 12
객체지향 신경쓰지말고 일단 클래스 다뤄봐 - dc App
익명(118.235)2025-01-21 01:24
감사합니다 선생님 그냥 클래스 부분 책 예제 따라하다보면 언젠가 깨달음을 얻겠죠..? 너무 막막하네요 감사합니다
익명(220.79)2025-01-21 01:25
어차피 예제는 설명한다고 어려운거
그리고 필요성에 따라 다르고
그냥 개념 자체는 어려울 게 없음
OOP=추상화-캡슐화-상속
추상화->복잡한거 단순화 시켜서 속성 추출
캡슐화->데이터 다루는 함수를 하나의 단위(클래스)로 묶고, 외부 데이터로 부터 직접적인 접근 막아서 데이터 무결성을 보호.
참고로 이 외부의 구분을 접근 제어자(private,protected,public 등등으로 구분)
상속->기존 클래스의 공통 속성을 물려받아서 생성하는거 (ex. 영장류-> 인간, 원숭이 이런식)
다형성->하나의 인터페이스를 통해 여러가지 형태의 객체가 되는것.
핵심만 기억하면 어차피 모든 건 곁가지고 그걸 구현하는 도구임
ㅆㅇㅆ(124.216)2025-01-21 02:05
답글
C++는 모던 C++이면 RAII인데 이거는 객체의 생성 관리가 힘드니까 객체의 생명주기와 자원관리를 연결하겠다는거
예제가 어려운 이유= 걍 예제 문제 풀이는 원래 어려움. 자기 분야나 아니고 처음 하는 분야면 어려움.
ㅆㅇㅆ(124.216)2025-01-21 02:06
답글
긴 코드 줄수로 보는게 아니라, 어떤 객체를 구현했고 어떻게 분리 시켜놨느냐로 접근하는게 사실 OOP 코드의 접근이라 긴 줄수가 아니라 기본적으로 메서드 단위부터 봐.
물론 프로퍼티 이런것도 봐야하지만 애초에 그 줄수가 늘어날수록 절차 지향에서 감당안되서 나온게 OOP 개념이라. 기본적으로 매서드 단위의 관계 파악이 OOP 핵심이라 그냥 메서드가 뭐 있고 어떤 구조인가? 정도만 봐도 OOP에 맞는 해석가능함. 그 세부구조의 구현이 알고리즘에 연관된거고
당연히 세부 구조 구현은 대부분 알고리즘이라 알고리즘 모르는 초반은 어려울수밖에
ㅆㅇㅆ(124.216)2025-01-21 02:12
일반적으로는 C++가 더 어렵다는게 C++는 라이브러리가 더 많고, 평균적으로 저수준까지 다룰 수 있고, 현대적으로 C++11 이후 모던 C++되면서 RAII 개념 같은게 추가되서 어려움. 자바는 이런 어려운 저수준을 JVM(자바 버츄얼 가상 머신)으로 처리해서 C++ 덜어려운데, 사실 자바도 성능 낼려면 몸비틀어야해서 쉽고 어렵고 그런 언어는 없긴함. 다만 C++는 역사가 긴만큼 방대한 라이브러리가 있어서 어려움.
ㅆㅇㅆ(124.216)2025-01-21 02:33
답글
참고로 일반적으로 OOP 설명할때 붕어빵틀로 설명하는데 이는 잘못된 설명이므로 뇌리에 지워둬라.
왜냐하면 OOP의 핵심인 객체간의 상호작용을 설명하지 못함.
아마 과거 OOP의 핵심이었던 '상속'을 설명하기위해 도입된건데 요즘은 그 상속도 컴포지션으로 하라 그럼.
여튼 그냥 그런 개념이 있다 받아들이셈. 왜냐하면 이건 그냥 패러다임 전환이기때문에 이런 개념이 있다라고 외우는게 맞음
ㅆㅇㅆ(124.216)2025-01-21 02:41
너무 의미에 몰두하지말고, 실제 코드로 접근하는 것을 추천 - dc App
프로그래밍(nowadays3724)2025-01-21 03:16
요즈음의 C++는 철학이고 패러다임이고 자시고 걍 일단 필수로 외워야 되는 문법량이 C에 비해서 존나게 많음 진짜 존나 많음
일단 이게 첫번째 진입장벽이니까 처음에는 복잡한 생각하지 말고 최대한 syntax를 이해하고 외워라
객체지향 신경쓰지말고 일단 클래스 다뤄봐 - dc App
감사합니다 선생님 그냥 클래스 부분 책 예제 따라하다보면 언젠가 깨달음을 얻겠죠..? 너무 막막하네요 감사합니다
어차피 예제는 설명한다고 어려운거 그리고 필요성에 따라 다르고 그냥 개념 자체는 어려울 게 없음 OOP=추상화-캡슐화-상속 추상화->복잡한거 단순화 시켜서 속성 추출 캡슐화->데이터 다루는 함수를 하나의 단위(클래스)로 묶고, 외부 데이터로 부터 직접적인 접근 막아서 데이터 무결성을 보호. 참고로 이 외부의 구분을 접근 제어자(private,protected,public 등등으로 구분) 상속->기존 클래스의 공통 속성을 물려받아서 생성하는거 (ex. 영장류-> 인간, 원숭이 이런식) 다형성->하나의 인터페이스를 통해 여러가지 형태의 객체가 되는것. 핵심만 기억하면 어차피 모든 건 곁가지고 그걸 구현하는 도구임
C++는 모던 C++이면 RAII인데 이거는 객체의 생성 관리가 힘드니까 객체의 생명주기와 자원관리를 연결하겠다는거 예제가 어려운 이유= 걍 예제 문제 풀이는 원래 어려움. 자기 분야나 아니고 처음 하는 분야면 어려움.
긴 코드 줄수로 보는게 아니라, 어떤 객체를 구현했고 어떻게 분리 시켜놨느냐로 접근하는게 사실 OOP 코드의 접근이라 긴 줄수가 아니라 기본적으로 메서드 단위부터 봐. 물론 프로퍼티 이런것도 봐야하지만 애초에 그 줄수가 늘어날수록 절차 지향에서 감당안되서 나온게 OOP 개념이라. 기본적으로 매서드 단위의 관계 파악이 OOP 핵심이라 그냥 메서드가 뭐 있고 어떤 구조인가? 정도만 봐도 OOP에 맞는 해석가능함. 그 세부구조의 구현이 알고리즘에 연관된거고 당연히 세부 구조 구현은 대부분 알고리즘이라 알고리즘 모르는 초반은 어려울수밖에
일반적으로는 C++가 더 어렵다는게 C++는 라이브러리가 더 많고, 평균적으로 저수준까지 다룰 수 있고, 현대적으로 C++11 이후 모던 C++되면서 RAII 개념 같은게 추가되서 어려움. 자바는 이런 어려운 저수준을 JVM(자바 버츄얼 가상 머신)으로 처리해서 C++ 덜어려운데, 사실 자바도 성능 낼려면 몸비틀어야해서 쉽고 어렵고 그런 언어는 없긴함. 다만 C++는 역사가 긴만큼 방대한 라이브러리가 있어서 어려움.
참고로 일반적으로 OOP 설명할때 붕어빵틀로 설명하는데 이는 잘못된 설명이므로 뇌리에 지워둬라. 왜냐하면 OOP의 핵심인 객체간의 상호작용을 설명하지 못함. 아마 과거 OOP의 핵심이었던 '상속'을 설명하기위해 도입된건데 요즘은 그 상속도 컴포지션으로 하라 그럼. 여튼 그냥 그런 개념이 있다 받아들이셈. 왜냐하면 이건 그냥 패러다임 전환이기때문에 이런 개념이 있다라고 외우는게 맞음
너무 의미에 몰두하지말고, 실제 코드로 접근하는 것을 추천 - dc App
요즈음의 C++는 철학이고 패러다임이고 자시고 걍 일단 필수로 외워야 되는 문법량이 C에 비해서 존나게 많음 진짜 존나 많음 일단 이게 첫번째 진입장벽이니까 처음에는 복잡한 생각하지 말고 최대한 syntax를 이해하고 외워라
https://www.amazon.com/Initialization-Story-Through-Options-Related/dp/B0BW38DDBK
https://www.amazon.com/Move-Semantics-Complete-Guide-First/dp/3967309002
일단 기본 문법 한바퀴 공부하고 났으면 이 두 책은 무조건 읽어라 이것도 기본 문법에 포함되는 내용이다