What's the difference between abstraction and encapsulation?












48















In interviews I have been asked to explain the difference between abstraction and encapsulation. My answer has been along the lines of




  • Abstraction allows us to represent complex real world in simplest manner. It is the process of identifying the relevant qualities and behaviors an object should possess; in other words, to represent the necessary feature without representing the background details.


  • Encapsulation is a process of hiding all the internal details of an object from the outside real world. The word "encapsulation", is like "enclosing" into a "capsule". It restricts clients from seeing its internal view where the behavior of the abstraction is implemented.



I think with above answer the interviewer was convinced, but then I was asked, if the purpose of both is hiding, then why there is a need to use encapsulation. At that time I didn't have a good answer for this.



What should I have added to make my answer more complete?










share|improve this question




















  • 3





    Here is a precised answer to this question, stackoverflow.com/questions/742341/…

    – Abhishek D
    Jan 31 '15 at 10:17











  • I once answered same question as "Encapsulation is more of a concept of categorization of objects (at least practically) while abstraction is a property of methods and functions the majority of time. So both are applicable on different members of OOP family."

    – thesummersign
    Apr 14 '15 at 5:39
















48















In interviews I have been asked to explain the difference between abstraction and encapsulation. My answer has been along the lines of




  • Abstraction allows us to represent complex real world in simplest manner. It is the process of identifying the relevant qualities and behaviors an object should possess; in other words, to represent the necessary feature without representing the background details.


  • Encapsulation is a process of hiding all the internal details of an object from the outside real world. The word "encapsulation", is like "enclosing" into a "capsule". It restricts clients from seeing its internal view where the behavior of the abstraction is implemented.



I think with above answer the interviewer was convinced, but then I was asked, if the purpose of both is hiding, then why there is a need to use encapsulation. At that time I didn't have a good answer for this.



What should I have added to make my answer more complete?










share|improve this question




















  • 3





    Here is a precised answer to this question, stackoverflow.com/questions/742341/…

    – Abhishek D
    Jan 31 '15 at 10:17











  • I once answered same question as "Encapsulation is more of a concept of categorization of objects (at least practically) while abstraction is a property of methods and functions the majority of time. So both are applicable on different members of OOP family."

    – thesummersign
    Apr 14 '15 at 5:39














48












48








48


29






In interviews I have been asked to explain the difference between abstraction and encapsulation. My answer has been along the lines of




  • Abstraction allows us to represent complex real world in simplest manner. It is the process of identifying the relevant qualities and behaviors an object should possess; in other words, to represent the necessary feature without representing the background details.


  • Encapsulation is a process of hiding all the internal details of an object from the outside real world. The word "encapsulation", is like "enclosing" into a "capsule". It restricts clients from seeing its internal view where the behavior of the abstraction is implemented.



I think with above answer the interviewer was convinced, but then I was asked, if the purpose of both is hiding, then why there is a need to use encapsulation. At that time I didn't have a good answer for this.



What should I have added to make my answer more complete?










share|improve this question
















In interviews I have been asked to explain the difference between abstraction and encapsulation. My answer has been along the lines of




  • Abstraction allows us to represent complex real world in simplest manner. It is the process of identifying the relevant qualities and behaviors an object should possess; in other words, to represent the necessary feature without representing the background details.


  • Encapsulation is a process of hiding all the internal details of an object from the outside real world. The word "encapsulation", is like "enclosing" into a "capsule". It restricts clients from seeing its internal view where the behavior of the abstraction is implemented.



I think with above answer the interviewer was convinced, but then I was asked, if the purpose of both is hiding, then why there is a need to use encapsulation. At that time I didn't have a good answer for this.



What should I have added to make my answer more complete?







oop encapsulation abstraction






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 15 '16 at 10:50









Toby Speight

16.7k134165




16.7k134165










asked Jul 30 '14 at 5:34









vishu minhasvishu minhas

1,0071924




1,0071924








  • 3





    Here is a precised answer to this question, stackoverflow.com/questions/742341/…

    – Abhishek D
    Jan 31 '15 at 10:17











  • I once answered same question as "Encapsulation is more of a concept of categorization of objects (at least practically) while abstraction is a property of methods and functions the majority of time. So both are applicable on different members of OOP family."

    – thesummersign
    Apr 14 '15 at 5:39














  • 3





    Here is a precised answer to this question, stackoverflow.com/questions/742341/…

    – Abhishek D
    Jan 31 '15 at 10:17











  • I once answered same question as "Encapsulation is more of a concept of categorization of objects (at least practically) while abstraction is a property of methods and functions the majority of time. So both are applicable on different members of OOP family."

    – thesummersign
    Apr 14 '15 at 5:39








3




3





Here is a precised answer to this question, stackoverflow.com/questions/742341/…

– Abhishek D
Jan 31 '15 at 10:17





Here is a precised answer to this question, stackoverflow.com/questions/742341/…

– Abhishek D
Jan 31 '15 at 10:17













I once answered same question as "Encapsulation is more of a concept of categorization of objects (at least practically) while abstraction is a property of methods and functions the majority of time. So both are applicable on different members of OOP family."

– thesummersign
Apr 14 '15 at 5:39





I once answered same question as "Encapsulation is more of a concept of categorization of objects (at least practically) while abstraction is a property of methods and functions the majority of time. So both are applicable on different members of OOP family."

– thesummersign
Apr 14 '15 at 5:39












21 Answers
21






active

oldest

votes


















62














Abstraction has to do with separating interface from implementation. (We don't care what it is, we care that it works a certain way.)



Encapsulation has to do with disallowing access to or knowledge of internal structures of an implementation. (We don't care or need to see how it works, only that it does.)



Some people do use encapsulation as a synonym for abstraction, which is (IMO) incorrect. It's possible that your interviewer thought this. If that is the case then you were each talking about two different things when you referred to "encapsulation."





It's worth noting that these concepts are represented differently in different programming languages. A few examples:




  • In Java and C#, interfaces (and, to some degree, abstract classes) provide abstraction, while access modifiers provide encapsulation.

  • It's mostly the same deal in C++, except that we don't have interfaces, we only have abstract classes.

  • In JavaScript, duck typing provides abstraction, and closure provides encapsulation. (Naming convention can also provide encapsulation, but this only works if all parties agree to follow it.)






share|improve this answer





















  • 2





    you means to say "Abstraction is implemented using interface and abstract class while Encapsulation is implemented using private and protected access modifier."?

    – vishu minhas
    Jul 30 '14 at 5:49











  • @vishuminhas That is the end result when applying the concepts to C#. These concepts are not specific to C# and can have other representations in other languages.

    – cdhowie
    Jul 30 '14 at 5:53











  • Could you please tell me if it would correct to say that Abstraction is best understood through the Client code's perspective while Encapsulation is best understood through from the Service Code ( i.e. the Encapsulated Class itself ) perspective?

    – user1338998
    Sep 28 '15 at 12:05











  • "Abstraction has to do with separating interface from implementation." . Well not always right? We have a notorious "Abstract Class" which may also provide some implementation.

    – zgulser
    Jan 21 '16 at 8:47











  • The following is access control to me, instead of encapsulation: "(...) disallowing access to or knowledge of internal structures of an implementation". It is a means of achieving encapsulation, which is to offer a useful operation while hiding implementation details.

    – André Valenti
    Jul 26 '16 at 21:23





















50














Its Simple!



Take example of television - it is Encapsulation, because:




  1. Television is loaded with different functionalies that i don't know because they are completely hidden.


  2. Hidden things like music, video etc everything bundled in a capsule that what we call a TV



Now, Abstraction is When we know a little about something and which can help us to manipulate something for which we don't know how it works internally.



For eg:
A remote-control for TV is abstraction, because




  1. With remote we know that pressing the number keys will change the channels. We are not aware as to what actually happens internally. We can manipulate the hidden thing but we don't know how it is being done internally.


Programmatically, when we can acess the hidden data somehow and know something.. is Abstraction .. And when we know nothing about the internals its Encapsulation.



Without remote we can't change anything on TV we have to see what it shows coz all controls are hidden.






share|improve this answer


























  • My interviewer was happy with this example, cheers

    – Suhail Mumtaz Awan
    Dec 28 '16 at 9:49



















15














Abstraction



Exposing the Entity instead of the details of the entity.



"Details are there, but we do not consider them. They are not required."



Example 1:



Various calculations:
Addition, Multiplication, Subtraction, Division, Square, Sin, Cos, Tan.



We do not show the details of how do we calculate the Sin, Cos or Tan. We just Show Calculator and it's various Methods which will be, and which needs to be used by the user.



Example 2:



Employee has:
First Name, Last Name, Middle Name. He can Login(), Logout(), DoWork().



Many processes might be happening for Logging employee In, such as connecting to database, sending Employee ID and Password, receiving reply from Database. Although above details are present, we will hide the details and expose only "Employee".



Encapsulation



Enclosing. Treating multiple characteristics/ functions as one unit instead of individuals.
So that outside world will refer to that unit instead of it's details directly.



"Details are there, we consider them, but do not show them, instead we show what you need to see."



Example 1:



Instead of calling it as Addition, Subtraction, Multiplication, Division, Now we will call it as a Calculator.



Example 2:



All characteristics and operations are now referred by the employee, such as "John". John Has name. John Can DoWork(). John can Login().



Hiding



Hiding the implemention from outside world.
So that outside world will not see what should not be seen.



"Details are there, we consider them, but we do not show them. You do not need to see them."



Example 1:



Your requirement: Addition, Substraction, Multiplication, Division. You will be able to see it and get the result.



You do not need to know where operands are getting stored. Its not your requirement.



Also, every instruction that I am executing, is also not your requirement.



Example 2:



John Would like to know his percentage of attendance. So GetAttendancePercentage() Will be called.



However, this method needs data saved in database. Hence it will call FetchDataFromDB(). FetchDataFromDB() is NOT required to be visible to outside world.



Hence we will hide it. However, John.GetAttendancePercentage() will be visible to outside world.



Abstraction, encapsulation and hiding complement each others.



Because we create level of abstraction over details, the details are encapsulated. And because they are enclosed, they are hidden.






share|improve this answer

































    11














    Difference between Abstraction and Encapsulation :-



    Abstraction




    1. Abstraction solves the problem in the design level.

    2. Abstraction is used for hiding the unwanted data and giving relevant data.

    3. Abstraction lets you focus on what the object does instead of how it does it.

    4. Abstraction- Outer layout, used in terms of design.
      For Example:-
      Outer Look of a Mobile Phone, like it has a display screen and keypad buttons to dial a number.


    Encapsulation




    1. Encapsulation solves the problem in the implementation level.

    2. Encapsulation means hiding the code and data into a single unit to protect the data from outside world.

    3. Encapsulation means hiding the internal details or mechanics of how an object does something.

    4. Encapsulation- Inner layout, used in terms of implementation.
      For Example:- Inner Implementation detail of a Mobile Phone, how keypad button and Display Screen are connect with each other using circuits.






    share|improve this answer































      5














      Encapsulation



      Encapsulation from what you have learnt googling around, is a concept of combining the related data and operations in a single capsule or what we could say a class in OOP, such that no other program can modify the data it holds or method implementation it has, at a particular instance of time. Only the getter and setter methods can provide access to the instance variables.



      Our code might be used by others and future up-gradations or bug fixes are liable. Encapsulation is something that makes sure that whatever code changes we do in our code doesn't break the code of others who are using it.



      Encapsulation adds up to the maintainability, flexibility and extensibility of the code.



      Encapsulation helps hide the implementation behind an interface.



      Abstraction



      Abstraction is the process of actually hiding the implementation behind an interface. So we are just aware of the actual behavior but not how exactly the think works out internally. The most common example could the scenario where put a key inside the lock and easily unlock it. So the interface here is the keyhole, while we are not aware of how the levers inside the lock co-ordinate among themselves to get the lock unlocked.



      To be more clear, abstraction can be explained as the capability to use the same interface for different objects. Different implementations of the same interface can exist, while the details of every implementation are hidden by encapsulation.



      Finally, the statement to answer all the confusions until now -
      The part that is hidden relates to encapsulation while the part that is exposed relates to abstraction.



      Read more on this here






      share|improve this answer































        3














        Abstraction : Abstraction is process in which you collect or gather relevant data and remove non-relevant data. (And if you have achieved abstraction, then encapsulation also achieved.)



        Encapsulation: Encapsulation is a process in which you wrap of functions and members in a single unit. Means You are hiding the implementation detail. Means user can access by making object of class, he/she can't see detail.



        Example:



         public class Test
        {
        int t;
        string s;
        public void show()
        {
        s = "Testing";
        Console.WriteLine(s);
        Console.WriteLine(See()); // No error
        }

        int See()
        {
        t = 10;
        return t;
        }

        public static void Main()
        {
        Test obj = new Test();
        obj.Show(); // there is no error
        obj.See(); // Error:- Inaccessible due to its protection level
        }
        }


        In the above example, User can access only Show() method by using obj, that is Abstraction.



        And See() method is calling internally in Show() method that is encapsulation, because user doesn't know what things are going on in Show() method.






        share|improve this answer































          3














          I know there are lot's of answers before me with variety of examples.

          Well here is my opinion abstraction is getting interested from reality .


          In abstraction we hide something to reduce the complexity of it
          and In encapsulation we hide something to protect the data.


          So we define encapsulation as wrapping of data and methods in single entity referred as class.


          In java we achieve encapsulation using getters and setters not just by wrapping data and methods in it. we also define a way to access that data.
          and while accessing data we protect it also.

          Techinical e.g would be to define a private data variable call weight.Now we know that weight can't be zero or less than zero in real world scenario.
          Imagine if there are no getters and setters someone could have easily set it to a negative value being public member of class.


          Now final difference using one real world example,

          Consider a circuit board consisting of switches and buttons.
          We wrap all the wires into a a circuit box, so that we can protect someone by not getting in contact directly(encapsulation).


          We don't care how those wires are connected to each other we just want an interface to turn on and off switch. That interface is provided by buttons(abstraction)






          share|improve this answer































            3














            Encapsulation : Suppose I have some confidential documents, now I hide these documents inside a locker so no one can gain access to them, this is encapsulation.



            Abstraction : A huge incident took place which was summarised in the newspaper. Now the newspaper only listed the more important details of the actual incident, this is abstraction. Further the headline of the incident highlights on even more specific details in a single line, hence providing higher level of abstraction on the incident. Also highlights of a football/cricket match can be considered as abstraction of the entire match.



            Hence encapsulation is hiding of data to protect its integrity and abstraction is highlighting more important details.



            In programming terms we can see that a variable may be enclosed is the scope of a class as private hence preventing it from being accessed directly from outside, this is encapsulation. Whereas a a function may be written in a class to swap two numbers. Now the numbers may be swapped in either by either using a temporary variable or through bit manipulation or using arithmetic operation, but the goal of the user is to receive the numbers swapped irrespective of the method used for swapping, this is abstraction.






            share|improve this answer































              2














              Abstraction: In case of an hardware abstraction layer, you have simple interfaces to trigger the hardware (e.g. turn enginge left/right) without knowing the hardware details behind. So hiding the complexity of the system. It's a simplified view of the real world.



              Encapsulation: Hiding of object internals. The object is an abstraction of the real world. But the details of this object (like data structures...) can be hidden via encapsulation.






              share|improve this answer































                2














                Abstraction refers to the act of representing essential features without including the background details or explanations.



                Encapsulation is a technique used for hiding the properties and behaviors of an object and allowing outside access only as appropriate. It prevents other objects from directly altering or accessing the properties or methods of the encapsulated object.



                Difference between abstraction and encapsulation



                1.Abstraction focuses on the outside view of an object (i.e. the interface) Encapsulation (information hiding) prevents clients from seeing it’s inside view, where the behavior of the abstraction is implemented.



                2.Abstraction solves the problem in the design side while Encapsulation is the Implementation.



                3.Encapsulation is the deliverable of Abstraction. Encapsulation barely talks about grouping up your abstraction to suit the developer needs.






                share|improve this answer































                  2














                  ABSTRACTION:"A view of a problem that extracts the essential information
                  relevant to a particular purpose and ignores the remainder of
                  the information."[IEEE, 1983]



                  ENCAPSULATION: "Encapsulation or equivalently information hiding refers to the
                  practice of including within an object everything it needs, and
                  furthermore doing this in such a way that no other object need ever
                  be aware of this internal structure."






                  share|improve this answer































                    2














                    Abstraction is one of the many benefits of Data Encapsulation. We can also say Data Encapsulation is one way to implement Abstraction.






                    share|improve this answer

































                      1














                      My opinion of abstraction is not in the sense of hiding implementation or background details!



                      Abstraction gives us the benefit to deal with a representation of the real world which is easier to handle, has the ability to be reused, could be combined with other components of our more or less complex program package. So we have to find out how we pick a complete peace of the real world, which is complete enough to represent the sense of our algorithm and data. The implementation of the interface may hide the details but this is not part of the work we have to do for abstracting something.



                      For me most important thing for abstraction is:




                      1. reduction of complexity

                      2. reduction of size/quantity

                      3. splitting of non related domains to clear and independent components


                      All this has for me nothing to do with hiding background details!



                      If you think of sorting some data, abstraction can result in:




                      1. a sorting algorithm, which is independent of the data representation

                      2. a compare function, which is independent of data and sort algorithm

                      3. a generic data representation, which is independent of the used algorithms


                      All these has nothing to do with hiding information.






                      share|improve this answer































                        1














                        In my view encapsulation is a thought of programmer to hide the complexity of the program code by using access specifier.

                        Where as Abstraction is separation of method and object according to there function and behavior. For example Car has sheets, wheels, break, headlight.






                        share|improve this answer































                          1














                          Developer A, who is inherently utilising the concept of abstraction will use a module/library function/widget, concerned only with what it does (and what it will be used for) but not how it does it. The interface of that module/library function/widget (the 'levers' the Developer A is allowed to pull/push) is the personification of that abstraction.



                          Developer B, who is seeking to create such a module/function/widget will utilise the concept of encapsulation to ensure Developer A (and any other developer who uses the widget) can take advantage of the resulting abstraction. Developer B is most certainly concerned with how the widget does what it does.



                          TLDR;




                          • Abstraction - I care about what something does, but not how it does it.

                          • Encapsulation - I care about how something does what it does such that others only need to care about what it does.


                          (As a loose generalisation, to abstract something, you must encapsulate something else. And by encapsulating something, you have created an abstraction.)






                          share|improve this answer

































                            0














                            The essential thing about abstraction is that client code operates in terms of a different logical/abstract model. That different model may be more or less complex than the implementation happens to be in any given client usage.



                            For example, "Iterator" abstracts (aka generalises) sequenced traversal of 0 or more values - in C++ it manifests as begin(), */-> (dereferencing), end(), pre/post ++ and possibly --, then there's +, +=, , std::advance etc.. That's a lot of baggage if the client could say increment a size_t along an array anyway. The essential thing is that the abstraction allows client code that needs to perform such a traversal to be decoupled from the exact nature of the "container" or data source providing the elements. Iteration is a higher-level notion that sometimes restricts the way the traversal is performed (e.g. a forward iterator can only advance an element at a time), but the data can then be provided by a larger set of sources (e.g. from a keyboard where there's not even a "container" in the sense of concurrently stored values). The client code can generally switch to another data source abstracted through its own iterators with minimal or even no changes, and even polymorphically to other data types - either implicitly or explicitly using something like std::iterator_traits<Iterator>::value_type available.



                            This is quite a different thing from encapsulation, which is the practice of making some data or functions less accessible, such that you know they're only used indirectly as a result of operations on the public interface. Encapsulation is an essential tool for maintaining invariants on an object, which means things you want to keep true after every public operation - if client code could just reach in and modify your object then you can't enforce any invariants. For example, a class might wrap a string, ensuring that after any operation any lowercase letters were changed to upper case, but if the client code can reach in and put a lowercase letter into the string without the involvement of the class's member functions, then the invariant can't be enforced.



                            To further highlight the difference, consider say a private std::vector<Timing_Sample> data member that's incidentally populated by operations on the containing object, with a report dumped out on destruction. With the data and destructor side effect not interacting with the object's client code in any way, and the operations on the object not intentionally controlling the time-keeping behaviour, there's no abstraction of that time reporting functionality but there is encapsulation. An example of abstraction would be to move the timing code into a separate class that might encapsulate the vector (make it private) and just provide a interface like add(const Timing_Sample&) and report(std::ostream&) - the necessary logical/abstract operations involved with using such instrumentation, with the highly desirable side effect that the abstracted code will often be reusable for other client code with similar functional needs.






                            share|improve this answer

































                              0














                              In my opinion, both terms are related in some sense and sort of mixed into each other. "Encapsulation" provides a way to grouping related fields, methods in a class (or module) to wrap the related things together. As of that time, it provides data hiding in two ways;





                              1. Through access modifiers.



                                Purely for hiding state of the class/object.




                              2. Abstracting some functionalities.



                                a. Through interfaces/abstract classes, complex logic inside the encapsulated class or module can be abstracted/generalized to be used by outside.



                                b. Through function signatures. Yes, even function signatures example of abstracting. Because callers only knows the signature and parameters (if any) and know nothing about how the function is carried out. It only cares of returned value.




                              Likewise, "Abstraction" might be think of a way of encapsulation in terms of grouping/wrapping the behaviour into an interface (or abstract class or might be even a normal class ).






                              share|improve this answer































                                0














                                As far as iOS is concerned, it can be said that Objective C files (i.e. .h and .m) use abstraction as well as encapsulation.



                                Abstraction



                                Header file (.h) only exposes the functions and public members to outside world. No one knows how they are used unless they have the implementation file with them. It is the .m file that holds all the usage and implementation logic with it self. "Implementation remains unexposed".



                                Encapsulation



                                The property (@property) encapsulates the memory management attribute (atomic, strong, retain, weak) of an iVar.






                                share|improve this answer































                                  0














                                  A program has mainly two parts : DATA and PROCESS. abstraction hides data in process so that no one can change. Encapsulation hides data everywhere so that it cannot be displayed.
                                  I hope this clarifies your doubt.






                                  share|improve this answer































                                    0














                                    Encapsulation is used for 2 main reasons:



                                    1.) Data hiding & protecting (the user of your class can't modify the data except through your provided methods).



                                    2.) Combining the data and methods used to manipulate the data together into one entity (capsule).
                                    I think that the second reason is the answer your interviewer wanted to hear.



                                    On the other hand, abstraction is needed to expose only the needed information to the user, and hiding unneeded details (for example, hiding the implementation of methods, so that the user is not affected if the implementation is changed).






                                    share|improve this answer































                                      0














                                      Abstraction: Hiding the data.
                                      Encapsulation: Binding the data.






                                      share|improve this answer























                                        Your Answer






                                        StackExchange.ifUsing("editor", function () {
                                        StackExchange.using("externalEditor", function () {
                                        StackExchange.using("snippets", function () {
                                        StackExchange.snippets.init();
                                        });
                                        });
                                        }, "code-snippets");

                                        StackExchange.ready(function() {
                                        var channelOptions = {
                                        tags: "".split(" "),
                                        id: "1"
                                        };
                                        initTagRenderer("".split(" "), "".split(" "), channelOptions);

                                        StackExchange.using("externalEditor", function() {
                                        // Have to fire editor after snippets, if snippets enabled
                                        if (StackExchange.settings.snippets.snippetsEnabled) {
                                        StackExchange.using("snippets", function() {
                                        createEditor();
                                        });
                                        }
                                        else {
                                        createEditor();
                                        }
                                        });

                                        function createEditor() {
                                        StackExchange.prepareEditor({
                                        heartbeatType: 'answer',
                                        autoActivateHeartbeat: false,
                                        convertImagesToLinks: true,
                                        noModals: true,
                                        showLowRepImageUploadWarning: true,
                                        reputationToPostImages: 10,
                                        bindNavPrevention: true,
                                        postfix: "",
                                        imageUploader: {
                                        brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                                        contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                                        allowUrls: true
                                        },
                                        onDemand: true,
                                        discardSelector: ".discard-answer"
                                        ,immediatelyShowMarkdownHelp:true
                                        });


                                        }
                                        });














                                        draft saved

                                        draft discarded


















                                        StackExchange.ready(
                                        function () {
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f25029465%2fwhats-the-difference-between-abstraction-and-encapsulation%23new-answer', 'question_page');
                                        }
                                        );

                                        Post as a guest















                                        Required, but never shown

























                                        21 Answers
                                        21






                                        active

                                        oldest

                                        votes








                                        21 Answers
                                        21






                                        active

                                        oldest

                                        votes









                                        active

                                        oldest

                                        votes






                                        active

                                        oldest

                                        votes









                                        62














                                        Abstraction has to do with separating interface from implementation. (We don't care what it is, we care that it works a certain way.)



                                        Encapsulation has to do with disallowing access to or knowledge of internal structures of an implementation. (We don't care or need to see how it works, only that it does.)



                                        Some people do use encapsulation as a synonym for abstraction, which is (IMO) incorrect. It's possible that your interviewer thought this. If that is the case then you were each talking about two different things when you referred to "encapsulation."





                                        It's worth noting that these concepts are represented differently in different programming languages. A few examples:




                                        • In Java and C#, interfaces (and, to some degree, abstract classes) provide abstraction, while access modifiers provide encapsulation.

                                        • It's mostly the same deal in C++, except that we don't have interfaces, we only have abstract classes.

                                        • In JavaScript, duck typing provides abstraction, and closure provides encapsulation. (Naming convention can also provide encapsulation, but this only works if all parties agree to follow it.)






                                        share|improve this answer





















                                        • 2





                                          you means to say "Abstraction is implemented using interface and abstract class while Encapsulation is implemented using private and protected access modifier."?

                                          – vishu minhas
                                          Jul 30 '14 at 5:49











                                        • @vishuminhas That is the end result when applying the concepts to C#. These concepts are not specific to C# and can have other representations in other languages.

                                          – cdhowie
                                          Jul 30 '14 at 5:53











                                        • Could you please tell me if it would correct to say that Abstraction is best understood through the Client code's perspective while Encapsulation is best understood through from the Service Code ( i.e. the Encapsulated Class itself ) perspective?

                                          – user1338998
                                          Sep 28 '15 at 12:05











                                        • "Abstraction has to do with separating interface from implementation." . Well not always right? We have a notorious "Abstract Class" which may also provide some implementation.

                                          – zgulser
                                          Jan 21 '16 at 8:47











                                        • The following is access control to me, instead of encapsulation: "(...) disallowing access to or knowledge of internal structures of an implementation". It is a means of achieving encapsulation, which is to offer a useful operation while hiding implementation details.

                                          – André Valenti
                                          Jul 26 '16 at 21:23


















                                        62














                                        Abstraction has to do with separating interface from implementation. (We don't care what it is, we care that it works a certain way.)



                                        Encapsulation has to do with disallowing access to or knowledge of internal structures of an implementation. (We don't care or need to see how it works, only that it does.)



                                        Some people do use encapsulation as a synonym for abstraction, which is (IMO) incorrect. It's possible that your interviewer thought this. If that is the case then you were each talking about two different things when you referred to "encapsulation."





                                        It's worth noting that these concepts are represented differently in different programming languages. A few examples:




                                        • In Java and C#, interfaces (and, to some degree, abstract classes) provide abstraction, while access modifiers provide encapsulation.

                                        • It's mostly the same deal in C++, except that we don't have interfaces, we only have abstract classes.

                                        • In JavaScript, duck typing provides abstraction, and closure provides encapsulation. (Naming convention can also provide encapsulation, but this only works if all parties agree to follow it.)






                                        share|improve this answer





















                                        • 2





                                          you means to say "Abstraction is implemented using interface and abstract class while Encapsulation is implemented using private and protected access modifier."?

                                          – vishu minhas
                                          Jul 30 '14 at 5:49











                                        • @vishuminhas That is the end result when applying the concepts to C#. These concepts are not specific to C# and can have other representations in other languages.

                                          – cdhowie
                                          Jul 30 '14 at 5:53











                                        • Could you please tell me if it would correct to say that Abstraction is best understood through the Client code's perspective while Encapsulation is best understood through from the Service Code ( i.e. the Encapsulated Class itself ) perspective?

                                          – user1338998
                                          Sep 28 '15 at 12:05











                                        • "Abstraction has to do with separating interface from implementation." . Well not always right? We have a notorious "Abstract Class" which may also provide some implementation.

                                          – zgulser
                                          Jan 21 '16 at 8:47











                                        • The following is access control to me, instead of encapsulation: "(...) disallowing access to or knowledge of internal structures of an implementation". It is a means of achieving encapsulation, which is to offer a useful operation while hiding implementation details.

                                          – André Valenti
                                          Jul 26 '16 at 21:23
















                                        62












                                        62








                                        62







                                        Abstraction has to do with separating interface from implementation. (We don't care what it is, we care that it works a certain way.)



                                        Encapsulation has to do with disallowing access to or knowledge of internal structures of an implementation. (We don't care or need to see how it works, only that it does.)



                                        Some people do use encapsulation as a synonym for abstraction, which is (IMO) incorrect. It's possible that your interviewer thought this. If that is the case then you were each talking about two different things when you referred to "encapsulation."





                                        It's worth noting that these concepts are represented differently in different programming languages. A few examples:




                                        • In Java and C#, interfaces (and, to some degree, abstract classes) provide abstraction, while access modifiers provide encapsulation.

                                        • It's mostly the same deal in C++, except that we don't have interfaces, we only have abstract classes.

                                        • In JavaScript, duck typing provides abstraction, and closure provides encapsulation. (Naming convention can also provide encapsulation, but this only works if all parties agree to follow it.)






                                        share|improve this answer















                                        Abstraction has to do with separating interface from implementation. (We don't care what it is, we care that it works a certain way.)



                                        Encapsulation has to do with disallowing access to or knowledge of internal structures of an implementation. (We don't care or need to see how it works, only that it does.)



                                        Some people do use encapsulation as a synonym for abstraction, which is (IMO) incorrect. It's possible that your interviewer thought this. If that is the case then you were each talking about two different things when you referred to "encapsulation."





                                        It's worth noting that these concepts are represented differently in different programming languages. A few examples:




                                        • In Java and C#, interfaces (and, to some degree, abstract classes) provide abstraction, while access modifiers provide encapsulation.

                                        • It's mostly the same deal in C++, except that we don't have interfaces, we only have abstract classes.

                                        • In JavaScript, duck typing provides abstraction, and closure provides encapsulation. (Naming convention can also provide encapsulation, but this only works if all parties agree to follow it.)







                                        share|improve this answer














                                        share|improve this answer



                                        share|improve this answer








                                        edited Dec 10 '17 at 16:18

























                                        answered Jul 30 '14 at 5:39









                                        cdhowiecdhowie

                                        110k15215237




                                        110k15215237








                                        • 2





                                          you means to say "Abstraction is implemented using interface and abstract class while Encapsulation is implemented using private and protected access modifier."?

                                          – vishu minhas
                                          Jul 30 '14 at 5:49











                                        • @vishuminhas That is the end result when applying the concepts to C#. These concepts are not specific to C# and can have other representations in other languages.

                                          – cdhowie
                                          Jul 30 '14 at 5:53











                                        • Could you please tell me if it would correct to say that Abstraction is best understood through the Client code's perspective while Encapsulation is best understood through from the Service Code ( i.e. the Encapsulated Class itself ) perspective?

                                          – user1338998
                                          Sep 28 '15 at 12:05











                                        • "Abstraction has to do with separating interface from implementation." . Well not always right? We have a notorious "Abstract Class" which may also provide some implementation.

                                          – zgulser
                                          Jan 21 '16 at 8:47











                                        • The following is access control to me, instead of encapsulation: "(...) disallowing access to or knowledge of internal structures of an implementation". It is a means of achieving encapsulation, which is to offer a useful operation while hiding implementation details.

                                          – André Valenti
                                          Jul 26 '16 at 21:23
















                                        • 2





                                          you means to say "Abstraction is implemented using interface and abstract class while Encapsulation is implemented using private and protected access modifier."?

                                          – vishu minhas
                                          Jul 30 '14 at 5:49











                                        • @vishuminhas That is the end result when applying the concepts to C#. These concepts are not specific to C# and can have other representations in other languages.

                                          – cdhowie
                                          Jul 30 '14 at 5:53











                                        • Could you please tell me if it would correct to say that Abstraction is best understood through the Client code's perspective while Encapsulation is best understood through from the Service Code ( i.e. the Encapsulated Class itself ) perspective?

                                          – user1338998
                                          Sep 28 '15 at 12:05











                                        • "Abstraction has to do with separating interface from implementation." . Well not always right? We have a notorious "Abstract Class" which may also provide some implementation.

                                          – zgulser
                                          Jan 21 '16 at 8:47











                                        • The following is access control to me, instead of encapsulation: "(...) disallowing access to or knowledge of internal structures of an implementation". It is a means of achieving encapsulation, which is to offer a useful operation while hiding implementation details.

                                          – André Valenti
                                          Jul 26 '16 at 21:23










                                        2




                                        2





                                        you means to say "Abstraction is implemented using interface and abstract class while Encapsulation is implemented using private and protected access modifier."?

                                        – vishu minhas
                                        Jul 30 '14 at 5:49





                                        you means to say "Abstraction is implemented using interface and abstract class while Encapsulation is implemented using private and protected access modifier."?

                                        – vishu minhas
                                        Jul 30 '14 at 5:49













                                        @vishuminhas That is the end result when applying the concepts to C#. These concepts are not specific to C# and can have other representations in other languages.

                                        – cdhowie
                                        Jul 30 '14 at 5:53





                                        @vishuminhas That is the end result when applying the concepts to C#. These concepts are not specific to C# and can have other representations in other languages.

                                        – cdhowie
                                        Jul 30 '14 at 5:53













                                        Could you please tell me if it would correct to say that Abstraction is best understood through the Client code's perspective while Encapsulation is best understood through from the Service Code ( i.e. the Encapsulated Class itself ) perspective?

                                        – user1338998
                                        Sep 28 '15 at 12:05





                                        Could you please tell me if it would correct to say that Abstraction is best understood through the Client code's perspective while Encapsulation is best understood through from the Service Code ( i.e. the Encapsulated Class itself ) perspective?

                                        – user1338998
                                        Sep 28 '15 at 12:05













                                        "Abstraction has to do with separating interface from implementation." . Well not always right? We have a notorious "Abstract Class" which may also provide some implementation.

                                        – zgulser
                                        Jan 21 '16 at 8:47





                                        "Abstraction has to do with separating interface from implementation." . Well not always right? We have a notorious "Abstract Class" which may also provide some implementation.

                                        – zgulser
                                        Jan 21 '16 at 8:47













                                        The following is access control to me, instead of encapsulation: "(...) disallowing access to or knowledge of internal structures of an implementation". It is a means of achieving encapsulation, which is to offer a useful operation while hiding implementation details.

                                        – André Valenti
                                        Jul 26 '16 at 21:23







                                        The following is access control to me, instead of encapsulation: "(...) disallowing access to or knowledge of internal structures of an implementation". It is a means of achieving encapsulation, which is to offer a useful operation while hiding implementation details.

                                        – André Valenti
                                        Jul 26 '16 at 21:23















                                        50














                                        Its Simple!



                                        Take example of television - it is Encapsulation, because:




                                        1. Television is loaded with different functionalies that i don't know because they are completely hidden.


                                        2. Hidden things like music, video etc everything bundled in a capsule that what we call a TV



                                        Now, Abstraction is When we know a little about something and which can help us to manipulate something for which we don't know how it works internally.



                                        For eg:
                                        A remote-control for TV is abstraction, because




                                        1. With remote we know that pressing the number keys will change the channels. We are not aware as to what actually happens internally. We can manipulate the hidden thing but we don't know how it is being done internally.


                                        Programmatically, when we can acess the hidden data somehow and know something.. is Abstraction .. And when we know nothing about the internals its Encapsulation.



                                        Without remote we can't change anything on TV we have to see what it shows coz all controls are hidden.






                                        share|improve this answer


























                                        • My interviewer was happy with this example, cheers

                                          – Suhail Mumtaz Awan
                                          Dec 28 '16 at 9:49
















                                        50














                                        Its Simple!



                                        Take example of television - it is Encapsulation, because:




                                        1. Television is loaded with different functionalies that i don't know because they are completely hidden.


                                        2. Hidden things like music, video etc everything bundled in a capsule that what we call a TV



                                        Now, Abstraction is When we know a little about something and which can help us to manipulate something for which we don't know how it works internally.



                                        For eg:
                                        A remote-control for TV is abstraction, because




                                        1. With remote we know that pressing the number keys will change the channels. We are not aware as to what actually happens internally. We can manipulate the hidden thing but we don't know how it is being done internally.


                                        Programmatically, when we can acess the hidden data somehow and know something.. is Abstraction .. And when we know nothing about the internals its Encapsulation.



                                        Without remote we can't change anything on TV we have to see what it shows coz all controls are hidden.






                                        share|improve this answer


























                                        • My interviewer was happy with this example, cheers

                                          – Suhail Mumtaz Awan
                                          Dec 28 '16 at 9:49














                                        50












                                        50








                                        50







                                        Its Simple!



                                        Take example of television - it is Encapsulation, because:




                                        1. Television is loaded with different functionalies that i don't know because they are completely hidden.


                                        2. Hidden things like music, video etc everything bundled in a capsule that what we call a TV



                                        Now, Abstraction is When we know a little about something and which can help us to manipulate something for which we don't know how it works internally.



                                        For eg:
                                        A remote-control for TV is abstraction, because




                                        1. With remote we know that pressing the number keys will change the channels. We are not aware as to what actually happens internally. We can manipulate the hidden thing but we don't know how it is being done internally.


                                        Programmatically, when we can acess the hidden data somehow and know something.. is Abstraction .. And when we know nothing about the internals its Encapsulation.



                                        Without remote we can't change anything on TV we have to see what it shows coz all controls are hidden.






                                        share|improve this answer















                                        Its Simple!



                                        Take example of television - it is Encapsulation, because:




                                        1. Television is loaded with different functionalies that i don't know because they are completely hidden.


                                        2. Hidden things like music, video etc everything bundled in a capsule that what we call a TV



                                        Now, Abstraction is When we know a little about something and which can help us to manipulate something for which we don't know how it works internally.



                                        For eg:
                                        A remote-control for TV is abstraction, because




                                        1. With remote we know that pressing the number keys will change the channels. We are not aware as to what actually happens internally. We can manipulate the hidden thing but we don't know how it is being done internally.


                                        Programmatically, when we can acess the hidden data somehow and know something.. is Abstraction .. And when we know nothing about the internals its Encapsulation.



                                        Without remote we can't change anything on TV we have to see what it shows coz all controls are hidden.







                                        share|improve this answer














                                        share|improve this answer



                                        share|improve this answer








                                        edited Jul 4 '16 at 12:41









                                        Prakash K

                                        10.7k442100




                                        10.7k442100










                                        answered Apr 13 '15 at 13:12









                                        Mayank GaurMayank Gaur

                                        52543




                                        52543













                                        • My interviewer was happy with this example, cheers

                                          – Suhail Mumtaz Awan
                                          Dec 28 '16 at 9:49



















                                        • My interviewer was happy with this example, cheers

                                          – Suhail Mumtaz Awan
                                          Dec 28 '16 at 9:49

















                                        My interviewer was happy with this example, cheers

                                        – Suhail Mumtaz Awan
                                        Dec 28 '16 at 9:49





                                        My interviewer was happy with this example, cheers

                                        – Suhail Mumtaz Awan
                                        Dec 28 '16 at 9:49











                                        15














                                        Abstraction



                                        Exposing the Entity instead of the details of the entity.



                                        "Details are there, but we do not consider them. They are not required."



                                        Example 1:



                                        Various calculations:
                                        Addition, Multiplication, Subtraction, Division, Square, Sin, Cos, Tan.



                                        We do not show the details of how do we calculate the Sin, Cos or Tan. We just Show Calculator and it's various Methods which will be, and which needs to be used by the user.



                                        Example 2:



                                        Employee has:
                                        First Name, Last Name, Middle Name. He can Login(), Logout(), DoWork().



                                        Many processes might be happening for Logging employee In, such as connecting to database, sending Employee ID and Password, receiving reply from Database. Although above details are present, we will hide the details and expose only "Employee".



                                        Encapsulation



                                        Enclosing. Treating multiple characteristics/ functions as one unit instead of individuals.
                                        So that outside world will refer to that unit instead of it's details directly.



                                        "Details are there, we consider them, but do not show them, instead we show what you need to see."



                                        Example 1:



                                        Instead of calling it as Addition, Subtraction, Multiplication, Division, Now we will call it as a Calculator.



                                        Example 2:



                                        All characteristics and operations are now referred by the employee, such as "John". John Has name. John Can DoWork(). John can Login().



                                        Hiding



                                        Hiding the implemention from outside world.
                                        So that outside world will not see what should not be seen.



                                        "Details are there, we consider them, but we do not show them. You do not need to see them."



                                        Example 1:



                                        Your requirement: Addition, Substraction, Multiplication, Division. You will be able to see it and get the result.



                                        You do not need to know where operands are getting stored. Its not your requirement.



                                        Also, every instruction that I am executing, is also not your requirement.



                                        Example 2:



                                        John Would like to know his percentage of attendance. So GetAttendancePercentage() Will be called.



                                        However, this method needs data saved in database. Hence it will call FetchDataFromDB(). FetchDataFromDB() is NOT required to be visible to outside world.



                                        Hence we will hide it. However, John.GetAttendancePercentage() will be visible to outside world.



                                        Abstraction, encapsulation and hiding complement each others.



                                        Because we create level of abstraction over details, the details are encapsulated. And because they are enclosed, they are hidden.






                                        share|improve this answer






























                                          15














                                          Abstraction



                                          Exposing the Entity instead of the details of the entity.



                                          "Details are there, but we do not consider them. They are not required."



                                          Example 1:



                                          Various calculations:
                                          Addition, Multiplication, Subtraction, Division, Square, Sin, Cos, Tan.



                                          We do not show the details of how do we calculate the Sin, Cos or Tan. We just Show Calculator and it's various Methods which will be, and which needs to be used by the user.



                                          Example 2:



                                          Employee has:
                                          First Name, Last Name, Middle Name. He can Login(), Logout(), DoWork().



                                          Many processes might be happening for Logging employee In, such as connecting to database, sending Employee ID and Password, receiving reply from Database. Although above details are present, we will hide the details and expose only "Employee".



                                          Encapsulation



                                          Enclosing. Treating multiple characteristics/ functions as one unit instead of individuals.
                                          So that outside world will refer to that unit instead of it's details directly.



                                          "Details are there, we consider them, but do not show them, instead we show what you need to see."



                                          Example 1:



                                          Instead of calling it as Addition, Subtraction, Multiplication, Division, Now we will call it as a Calculator.



                                          Example 2:



                                          All characteristics and operations are now referred by the employee, such as "John". John Has name. John Can DoWork(). John can Login().



                                          Hiding



                                          Hiding the implemention from outside world.
                                          So that outside world will not see what should not be seen.



                                          "Details are there, we consider them, but we do not show them. You do not need to see them."



                                          Example 1:



                                          Your requirement: Addition, Substraction, Multiplication, Division. You will be able to see it and get the result.



                                          You do not need to know where operands are getting stored. Its not your requirement.



                                          Also, every instruction that I am executing, is also not your requirement.



                                          Example 2:



                                          John Would like to know his percentage of attendance. So GetAttendancePercentage() Will be called.



                                          However, this method needs data saved in database. Hence it will call FetchDataFromDB(). FetchDataFromDB() is NOT required to be visible to outside world.



                                          Hence we will hide it. However, John.GetAttendancePercentage() will be visible to outside world.



                                          Abstraction, encapsulation and hiding complement each others.



                                          Because we create level of abstraction over details, the details are encapsulated. And because they are enclosed, they are hidden.






                                          share|improve this answer




























                                            15












                                            15








                                            15







                                            Abstraction



                                            Exposing the Entity instead of the details of the entity.



                                            "Details are there, but we do not consider them. They are not required."



                                            Example 1:



                                            Various calculations:
                                            Addition, Multiplication, Subtraction, Division, Square, Sin, Cos, Tan.



                                            We do not show the details of how do we calculate the Sin, Cos or Tan. We just Show Calculator and it's various Methods which will be, and which needs to be used by the user.



                                            Example 2:



                                            Employee has:
                                            First Name, Last Name, Middle Name. He can Login(), Logout(), DoWork().



                                            Many processes might be happening for Logging employee In, such as connecting to database, sending Employee ID and Password, receiving reply from Database. Although above details are present, we will hide the details and expose only "Employee".



                                            Encapsulation



                                            Enclosing. Treating multiple characteristics/ functions as one unit instead of individuals.
                                            So that outside world will refer to that unit instead of it's details directly.



                                            "Details are there, we consider them, but do not show them, instead we show what you need to see."



                                            Example 1:



                                            Instead of calling it as Addition, Subtraction, Multiplication, Division, Now we will call it as a Calculator.



                                            Example 2:



                                            All characteristics and operations are now referred by the employee, such as "John". John Has name. John Can DoWork(). John can Login().



                                            Hiding



                                            Hiding the implemention from outside world.
                                            So that outside world will not see what should not be seen.



                                            "Details are there, we consider them, but we do not show them. You do not need to see them."



                                            Example 1:



                                            Your requirement: Addition, Substraction, Multiplication, Division. You will be able to see it and get the result.



                                            You do not need to know where operands are getting stored. Its not your requirement.



                                            Also, every instruction that I am executing, is also not your requirement.



                                            Example 2:



                                            John Would like to know his percentage of attendance. So GetAttendancePercentage() Will be called.



                                            However, this method needs data saved in database. Hence it will call FetchDataFromDB(). FetchDataFromDB() is NOT required to be visible to outside world.



                                            Hence we will hide it. However, John.GetAttendancePercentage() will be visible to outside world.



                                            Abstraction, encapsulation and hiding complement each others.



                                            Because we create level of abstraction over details, the details are encapsulated. And because they are enclosed, they are hidden.






                                            share|improve this answer















                                            Abstraction



                                            Exposing the Entity instead of the details of the entity.



                                            "Details are there, but we do not consider them. They are not required."



                                            Example 1:



                                            Various calculations:
                                            Addition, Multiplication, Subtraction, Division, Square, Sin, Cos, Tan.



                                            We do not show the details of how do we calculate the Sin, Cos or Tan. We just Show Calculator and it's various Methods which will be, and which needs to be used by the user.



                                            Example 2:



                                            Employee has:
                                            First Name, Last Name, Middle Name. He can Login(), Logout(), DoWork().



                                            Many processes might be happening for Logging employee In, such as connecting to database, sending Employee ID and Password, receiving reply from Database. Although above details are present, we will hide the details and expose only "Employee".



                                            Encapsulation



                                            Enclosing. Treating multiple characteristics/ functions as one unit instead of individuals.
                                            So that outside world will refer to that unit instead of it's details directly.



                                            "Details are there, we consider them, but do not show them, instead we show what you need to see."



                                            Example 1:



                                            Instead of calling it as Addition, Subtraction, Multiplication, Division, Now we will call it as a Calculator.



                                            Example 2:



                                            All characteristics and operations are now referred by the employee, such as "John". John Has name. John Can DoWork(). John can Login().



                                            Hiding



                                            Hiding the implemention from outside world.
                                            So that outside world will not see what should not be seen.



                                            "Details are there, we consider them, but we do not show them. You do not need to see them."



                                            Example 1:



                                            Your requirement: Addition, Substraction, Multiplication, Division. You will be able to see it and get the result.



                                            You do not need to know where operands are getting stored. Its not your requirement.



                                            Also, every instruction that I am executing, is also not your requirement.



                                            Example 2:



                                            John Would like to know his percentage of attendance. So GetAttendancePercentage() Will be called.



                                            However, this method needs data saved in database. Hence it will call FetchDataFromDB(). FetchDataFromDB() is NOT required to be visible to outside world.



                                            Hence we will hide it. However, John.GetAttendancePercentage() will be visible to outside world.



                                            Abstraction, encapsulation and hiding complement each others.



                                            Because we create level of abstraction over details, the details are encapsulated. And because they are enclosed, they are hidden.







                                            share|improve this answer














                                            share|improve this answer



                                            share|improve this answer








                                            edited Apr 12 '16 at 12:18

























                                            answered Mar 29 '15 at 5:35









                                            Aditya BokadeAditya Bokade

                                            1,1491840




                                            1,1491840























                                                11














                                                Difference between Abstraction and Encapsulation :-



                                                Abstraction




                                                1. Abstraction solves the problem in the design level.

                                                2. Abstraction is used for hiding the unwanted data and giving relevant data.

                                                3. Abstraction lets you focus on what the object does instead of how it does it.

                                                4. Abstraction- Outer layout, used in terms of design.
                                                  For Example:-
                                                  Outer Look of a Mobile Phone, like it has a display screen and keypad buttons to dial a number.


                                                Encapsulation




                                                1. Encapsulation solves the problem in the implementation level.

                                                2. Encapsulation means hiding the code and data into a single unit to protect the data from outside world.

                                                3. Encapsulation means hiding the internal details or mechanics of how an object does something.

                                                4. Encapsulation- Inner layout, used in terms of implementation.
                                                  For Example:- Inner Implementation detail of a Mobile Phone, how keypad button and Display Screen are connect with each other using circuits.






                                                share|improve this answer




























                                                  11














                                                  Difference between Abstraction and Encapsulation :-



                                                  Abstraction




                                                  1. Abstraction solves the problem in the design level.

                                                  2. Abstraction is used for hiding the unwanted data and giving relevant data.

                                                  3. Abstraction lets you focus on what the object does instead of how it does it.

                                                  4. Abstraction- Outer layout, used in terms of design.
                                                    For Example:-
                                                    Outer Look of a Mobile Phone, like it has a display screen and keypad buttons to dial a number.


                                                  Encapsulation




                                                  1. Encapsulation solves the problem in the implementation level.

                                                  2. Encapsulation means hiding the code and data into a single unit to protect the data from outside world.

                                                  3. Encapsulation means hiding the internal details or mechanics of how an object does something.

                                                  4. Encapsulation- Inner layout, used in terms of implementation.
                                                    For Example:- Inner Implementation detail of a Mobile Phone, how keypad button and Display Screen are connect with each other using circuits.






                                                  share|improve this answer


























                                                    11












                                                    11








                                                    11







                                                    Difference between Abstraction and Encapsulation :-



                                                    Abstraction




                                                    1. Abstraction solves the problem in the design level.

                                                    2. Abstraction is used for hiding the unwanted data and giving relevant data.

                                                    3. Abstraction lets you focus on what the object does instead of how it does it.

                                                    4. Abstraction- Outer layout, used in terms of design.
                                                      For Example:-
                                                      Outer Look of a Mobile Phone, like it has a display screen and keypad buttons to dial a number.


                                                    Encapsulation




                                                    1. Encapsulation solves the problem in the implementation level.

                                                    2. Encapsulation means hiding the code and data into a single unit to protect the data from outside world.

                                                    3. Encapsulation means hiding the internal details or mechanics of how an object does something.

                                                    4. Encapsulation- Inner layout, used in terms of implementation.
                                                      For Example:- Inner Implementation detail of a Mobile Phone, how keypad button and Display Screen are connect with each other using circuits.






                                                    share|improve this answer













                                                    Difference between Abstraction and Encapsulation :-



                                                    Abstraction




                                                    1. Abstraction solves the problem in the design level.

                                                    2. Abstraction is used for hiding the unwanted data and giving relevant data.

                                                    3. Abstraction lets you focus on what the object does instead of how it does it.

                                                    4. Abstraction- Outer layout, used in terms of design.
                                                      For Example:-
                                                      Outer Look of a Mobile Phone, like it has a display screen and keypad buttons to dial a number.


                                                    Encapsulation




                                                    1. Encapsulation solves the problem in the implementation level.

                                                    2. Encapsulation means hiding the code and data into a single unit to protect the data from outside world.

                                                    3. Encapsulation means hiding the internal details or mechanics of how an object does something.

                                                    4. Encapsulation- Inner layout, used in terms of implementation.
                                                      For Example:- Inner Implementation detail of a Mobile Phone, how keypad button and Display Screen are connect with each other using circuits.







                                                    share|improve this answer












                                                    share|improve this answer



                                                    share|improve this answer










                                                    answered Apr 12 '16 at 12:40









                                                    Vishal PatoliaVishal Patolia

                                                    636613




                                                    636613























                                                        5














                                                        Encapsulation



                                                        Encapsulation from what you have learnt googling around, is a concept of combining the related data and operations in a single capsule or what we could say a class in OOP, such that no other program can modify the data it holds or method implementation it has, at a particular instance of time. Only the getter and setter methods can provide access to the instance variables.



                                                        Our code might be used by others and future up-gradations or bug fixes are liable. Encapsulation is something that makes sure that whatever code changes we do in our code doesn't break the code of others who are using it.



                                                        Encapsulation adds up to the maintainability, flexibility and extensibility of the code.



                                                        Encapsulation helps hide the implementation behind an interface.



                                                        Abstraction



                                                        Abstraction is the process of actually hiding the implementation behind an interface. So we are just aware of the actual behavior but not how exactly the think works out internally. The most common example could the scenario where put a key inside the lock and easily unlock it. So the interface here is the keyhole, while we are not aware of how the levers inside the lock co-ordinate among themselves to get the lock unlocked.



                                                        To be more clear, abstraction can be explained as the capability to use the same interface for different objects. Different implementations of the same interface can exist, while the details of every implementation are hidden by encapsulation.



                                                        Finally, the statement to answer all the confusions until now -
                                                        The part that is hidden relates to encapsulation while the part that is exposed relates to abstraction.



                                                        Read more on this here






                                                        share|improve this answer




























                                                          5














                                                          Encapsulation



                                                          Encapsulation from what you have learnt googling around, is a concept of combining the related data and operations in a single capsule or what we could say a class in OOP, such that no other program can modify the data it holds or method implementation it has, at a particular instance of time. Only the getter and setter methods can provide access to the instance variables.



                                                          Our code might be used by others and future up-gradations or bug fixes are liable. Encapsulation is something that makes sure that whatever code changes we do in our code doesn't break the code of others who are using it.



                                                          Encapsulation adds up to the maintainability, flexibility and extensibility of the code.



                                                          Encapsulation helps hide the implementation behind an interface.



                                                          Abstraction



                                                          Abstraction is the process of actually hiding the implementation behind an interface. So we are just aware of the actual behavior but not how exactly the think works out internally. The most common example could the scenario where put a key inside the lock and easily unlock it. So the interface here is the keyhole, while we are not aware of how the levers inside the lock co-ordinate among themselves to get the lock unlocked.



                                                          To be more clear, abstraction can be explained as the capability to use the same interface for different objects. Different implementations of the same interface can exist, while the details of every implementation are hidden by encapsulation.



                                                          Finally, the statement to answer all the confusions until now -
                                                          The part that is hidden relates to encapsulation while the part that is exposed relates to abstraction.



                                                          Read more on this here






                                                          share|improve this answer


























                                                            5












                                                            5








                                                            5







                                                            Encapsulation



                                                            Encapsulation from what you have learnt googling around, is a concept of combining the related data and operations in a single capsule or what we could say a class in OOP, such that no other program can modify the data it holds or method implementation it has, at a particular instance of time. Only the getter and setter methods can provide access to the instance variables.



                                                            Our code might be used by others and future up-gradations or bug fixes are liable. Encapsulation is something that makes sure that whatever code changes we do in our code doesn't break the code of others who are using it.



                                                            Encapsulation adds up to the maintainability, flexibility and extensibility of the code.



                                                            Encapsulation helps hide the implementation behind an interface.



                                                            Abstraction



                                                            Abstraction is the process of actually hiding the implementation behind an interface. So we are just aware of the actual behavior but not how exactly the think works out internally. The most common example could the scenario where put a key inside the lock and easily unlock it. So the interface here is the keyhole, while we are not aware of how the levers inside the lock co-ordinate among themselves to get the lock unlocked.



                                                            To be more clear, abstraction can be explained as the capability to use the same interface for different objects. Different implementations of the same interface can exist, while the details of every implementation are hidden by encapsulation.



                                                            Finally, the statement to answer all the confusions until now -
                                                            The part that is hidden relates to encapsulation while the part that is exposed relates to abstraction.



                                                            Read more on this here






                                                            share|improve this answer













                                                            Encapsulation



                                                            Encapsulation from what you have learnt googling around, is a concept of combining the related data and operations in a single capsule or what we could say a class in OOP, such that no other program can modify the data it holds or method implementation it has, at a particular instance of time. Only the getter and setter methods can provide access to the instance variables.



                                                            Our code might be used by others and future up-gradations or bug fixes are liable. Encapsulation is something that makes sure that whatever code changes we do in our code doesn't break the code of others who are using it.



                                                            Encapsulation adds up to the maintainability, flexibility and extensibility of the code.



                                                            Encapsulation helps hide the implementation behind an interface.



                                                            Abstraction



                                                            Abstraction is the process of actually hiding the implementation behind an interface. So we are just aware of the actual behavior but not how exactly the think works out internally. The most common example could the scenario where put a key inside the lock and easily unlock it. So the interface here is the keyhole, while we are not aware of how the levers inside the lock co-ordinate among themselves to get the lock unlocked.



                                                            To be more clear, abstraction can be explained as the capability to use the same interface for different objects. Different implementations of the same interface can exist, while the details of every implementation are hidden by encapsulation.



                                                            Finally, the statement to answer all the confusions until now -
                                                            The part that is hidden relates to encapsulation while the part that is exposed relates to abstraction.



                                                            Read more on this here







                                                            share|improve this answer












                                                            share|improve this answer



                                                            share|improve this answer










                                                            answered Jun 24 '15 at 18:56









                                                            abhimanyu435abhimanyu435

                                                            5614




                                                            5614























                                                                3














                                                                Abstraction : Abstraction is process in which you collect or gather relevant data and remove non-relevant data. (And if you have achieved abstraction, then encapsulation also achieved.)



                                                                Encapsulation: Encapsulation is a process in which you wrap of functions and members in a single unit. Means You are hiding the implementation detail. Means user can access by making object of class, he/she can't see detail.



                                                                Example:



                                                                 public class Test
                                                                {
                                                                int t;
                                                                string s;
                                                                public void show()
                                                                {
                                                                s = "Testing";
                                                                Console.WriteLine(s);
                                                                Console.WriteLine(See()); // No error
                                                                }

                                                                int See()
                                                                {
                                                                t = 10;
                                                                return t;
                                                                }

                                                                public static void Main()
                                                                {
                                                                Test obj = new Test();
                                                                obj.Show(); // there is no error
                                                                obj.See(); // Error:- Inaccessible due to its protection level
                                                                }
                                                                }


                                                                In the above example, User can access only Show() method by using obj, that is Abstraction.



                                                                And See() method is calling internally in Show() method that is encapsulation, because user doesn't know what things are going on in Show() method.






                                                                share|improve this answer




























                                                                  3














                                                                  Abstraction : Abstraction is process in which you collect or gather relevant data and remove non-relevant data. (And if you have achieved abstraction, then encapsulation also achieved.)



                                                                  Encapsulation: Encapsulation is a process in which you wrap of functions and members in a single unit. Means You are hiding the implementation detail. Means user can access by making object of class, he/she can't see detail.



                                                                  Example:



                                                                   public class Test
                                                                  {
                                                                  int t;
                                                                  string s;
                                                                  public void show()
                                                                  {
                                                                  s = "Testing";
                                                                  Console.WriteLine(s);
                                                                  Console.WriteLine(See()); // No error
                                                                  }

                                                                  int See()
                                                                  {
                                                                  t = 10;
                                                                  return t;
                                                                  }

                                                                  public static void Main()
                                                                  {
                                                                  Test obj = new Test();
                                                                  obj.Show(); // there is no error
                                                                  obj.See(); // Error:- Inaccessible due to its protection level
                                                                  }
                                                                  }


                                                                  In the above example, User can access only Show() method by using obj, that is Abstraction.



                                                                  And See() method is calling internally in Show() method that is encapsulation, because user doesn't know what things are going on in Show() method.






                                                                  share|improve this answer


























                                                                    3












                                                                    3








                                                                    3







                                                                    Abstraction : Abstraction is process in which you collect or gather relevant data and remove non-relevant data. (And if you have achieved abstraction, then encapsulation also achieved.)



                                                                    Encapsulation: Encapsulation is a process in which you wrap of functions and members in a single unit. Means You are hiding the implementation detail. Means user can access by making object of class, he/she can't see detail.



                                                                    Example:



                                                                     public class Test
                                                                    {
                                                                    int t;
                                                                    string s;
                                                                    public void show()
                                                                    {
                                                                    s = "Testing";
                                                                    Console.WriteLine(s);
                                                                    Console.WriteLine(See()); // No error
                                                                    }

                                                                    int See()
                                                                    {
                                                                    t = 10;
                                                                    return t;
                                                                    }

                                                                    public static void Main()
                                                                    {
                                                                    Test obj = new Test();
                                                                    obj.Show(); // there is no error
                                                                    obj.See(); // Error:- Inaccessible due to its protection level
                                                                    }
                                                                    }


                                                                    In the above example, User can access only Show() method by using obj, that is Abstraction.



                                                                    And See() method is calling internally in Show() method that is encapsulation, because user doesn't know what things are going on in Show() method.






                                                                    share|improve this answer













                                                                    Abstraction : Abstraction is process in which you collect or gather relevant data and remove non-relevant data. (And if you have achieved abstraction, then encapsulation also achieved.)



                                                                    Encapsulation: Encapsulation is a process in which you wrap of functions and members in a single unit. Means You are hiding the implementation detail. Means user can access by making object of class, he/she can't see detail.



                                                                    Example:



                                                                     public class Test
                                                                    {
                                                                    int t;
                                                                    string s;
                                                                    public void show()
                                                                    {
                                                                    s = "Testing";
                                                                    Console.WriteLine(s);
                                                                    Console.WriteLine(See()); // No error
                                                                    }

                                                                    int See()
                                                                    {
                                                                    t = 10;
                                                                    return t;
                                                                    }

                                                                    public static void Main()
                                                                    {
                                                                    Test obj = new Test();
                                                                    obj.Show(); // there is no error
                                                                    obj.See(); // Error:- Inaccessible due to its protection level
                                                                    }
                                                                    }


                                                                    In the above example, User can access only Show() method by using obj, that is Abstraction.



                                                                    And See() method is calling internally in Show() method that is encapsulation, because user doesn't know what things are going on in Show() method.







                                                                    share|improve this answer












                                                                    share|improve this answer



                                                                    share|improve this answer










                                                                    answered Jun 17 '15 at 6:50









                                                                    Sonu RajpootSonu Rajpoot

                                                                    31734




                                                                    31734























                                                                        3














                                                                        I know there are lot's of answers before me with variety of examples.

                                                                        Well here is my opinion abstraction is getting interested from reality .


                                                                        In abstraction we hide something to reduce the complexity of it
                                                                        and In encapsulation we hide something to protect the data.


                                                                        So we define encapsulation as wrapping of data and methods in single entity referred as class.


                                                                        In java we achieve encapsulation using getters and setters not just by wrapping data and methods in it. we also define a way to access that data.
                                                                        and while accessing data we protect it also.

                                                                        Techinical e.g would be to define a private data variable call weight.Now we know that weight can't be zero or less than zero in real world scenario.
                                                                        Imagine if there are no getters and setters someone could have easily set it to a negative value being public member of class.


                                                                        Now final difference using one real world example,

                                                                        Consider a circuit board consisting of switches and buttons.
                                                                        We wrap all the wires into a a circuit box, so that we can protect someone by not getting in contact directly(encapsulation).


                                                                        We don't care how those wires are connected to each other we just want an interface to turn on and off switch. That interface is provided by buttons(abstraction)






                                                                        share|improve this answer




























                                                                          3














                                                                          I know there are lot's of answers before me with variety of examples.

                                                                          Well here is my opinion abstraction is getting interested from reality .


                                                                          In abstraction we hide something to reduce the complexity of it
                                                                          and In encapsulation we hide something to protect the data.


                                                                          So we define encapsulation as wrapping of data and methods in single entity referred as class.


                                                                          In java we achieve encapsulation using getters and setters not just by wrapping data and methods in it. we also define a way to access that data.
                                                                          and while accessing data we protect it also.

                                                                          Techinical e.g would be to define a private data variable call weight.Now we know that weight can't be zero or less than zero in real world scenario.
                                                                          Imagine if there are no getters and setters someone could have easily set it to a negative value being public member of class.


                                                                          Now final difference using one real world example,

                                                                          Consider a circuit board consisting of switches and buttons.
                                                                          We wrap all the wires into a a circuit box, so that we can protect someone by not getting in contact directly(encapsulation).


                                                                          We don't care how those wires are connected to each other we just want an interface to turn on and off switch. That interface is provided by buttons(abstraction)






                                                                          share|improve this answer


























                                                                            3












                                                                            3








                                                                            3







                                                                            I know there are lot's of answers before me with variety of examples.

                                                                            Well here is my opinion abstraction is getting interested from reality .


                                                                            In abstraction we hide something to reduce the complexity of it
                                                                            and In encapsulation we hide something to protect the data.


                                                                            So we define encapsulation as wrapping of data and methods in single entity referred as class.


                                                                            In java we achieve encapsulation using getters and setters not just by wrapping data and methods in it. we also define a way to access that data.
                                                                            and while accessing data we protect it also.

                                                                            Techinical e.g would be to define a private data variable call weight.Now we know that weight can't be zero or less than zero in real world scenario.
                                                                            Imagine if there are no getters and setters someone could have easily set it to a negative value being public member of class.


                                                                            Now final difference using one real world example,

                                                                            Consider a circuit board consisting of switches and buttons.
                                                                            We wrap all the wires into a a circuit box, so that we can protect someone by not getting in contact directly(encapsulation).


                                                                            We don't care how those wires are connected to each other we just want an interface to turn on and off switch. That interface is provided by buttons(abstraction)






                                                                            share|improve this answer













                                                                            I know there are lot's of answers before me with variety of examples.

                                                                            Well here is my opinion abstraction is getting interested from reality .


                                                                            In abstraction we hide something to reduce the complexity of it
                                                                            and In encapsulation we hide something to protect the data.


                                                                            So we define encapsulation as wrapping of data and methods in single entity referred as class.


                                                                            In java we achieve encapsulation using getters and setters not just by wrapping data and methods in it. we also define a way to access that data.
                                                                            and while accessing data we protect it also.

                                                                            Techinical e.g would be to define a private data variable call weight.Now we know that weight can't be zero or less than zero in real world scenario.
                                                                            Imagine if there are no getters and setters someone could have easily set it to a negative value being public member of class.


                                                                            Now final difference using one real world example,

                                                                            Consider a circuit board consisting of switches and buttons.
                                                                            We wrap all the wires into a a circuit box, so that we can protect someone by not getting in contact directly(encapsulation).


                                                                            We don't care how those wires are connected to each other we just want an interface to turn on and off switch. That interface is provided by buttons(abstraction)







                                                                            share|improve this answer












                                                                            share|improve this answer



                                                                            share|improve this answer










                                                                            answered Jul 9 '17 at 9:49









                                                                            Omkar MozarOmkar Mozar

                                                                            1178




                                                                            1178























                                                                                3














                                                                                Encapsulation : Suppose I have some confidential documents, now I hide these documents inside a locker so no one can gain access to them, this is encapsulation.



                                                                                Abstraction : A huge incident took place which was summarised in the newspaper. Now the newspaper only listed the more important details of the actual incident, this is abstraction. Further the headline of the incident highlights on even more specific details in a single line, hence providing higher level of abstraction on the incident. Also highlights of a football/cricket match can be considered as abstraction of the entire match.



                                                                                Hence encapsulation is hiding of data to protect its integrity and abstraction is highlighting more important details.



                                                                                In programming terms we can see that a variable may be enclosed is the scope of a class as private hence preventing it from being accessed directly from outside, this is encapsulation. Whereas a a function may be written in a class to swap two numbers. Now the numbers may be swapped in either by either using a temporary variable or through bit manipulation or using arithmetic operation, but the goal of the user is to receive the numbers swapped irrespective of the method used for swapping, this is abstraction.






                                                                                share|improve this answer




























                                                                                  3














                                                                                  Encapsulation : Suppose I have some confidential documents, now I hide these documents inside a locker so no one can gain access to them, this is encapsulation.



                                                                                  Abstraction : A huge incident took place which was summarised in the newspaper. Now the newspaper only listed the more important details of the actual incident, this is abstraction. Further the headline of the incident highlights on even more specific details in a single line, hence providing higher level of abstraction on the incident. Also highlights of a football/cricket match can be considered as abstraction of the entire match.



                                                                                  Hence encapsulation is hiding of data to protect its integrity and abstraction is highlighting more important details.



                                                                                  In programming terms we can see that a variable may be enclosed is the scope of a class as private hence preventing it from being accessed directly from outside, this is encapsulation. Whereas a a function may be written in a class to swap two numbers. Now the numbers may be swapped in either by either using a temporary variable or through bit manipulation or using arithmetic operation, but the goal of the user is to receive the numbers swapped irrespective of the method used for swapping, this is abstraction.






                                                                                  share|improve this answer


























                                                                                    3












                                                                                    3








                                                                                    3







                                                                                    Encapsulation : Suppose I have some confidential documents, now I hide these documents inside a locker so no one can gain access to them, this is encapsulation.



                                                                                    Abstraction : A huge incident took place which was summarised in the newspaper. Now the newspaper only listed the more important details of the actual incident, this is abstraction. Further the headline of the incident highlights on even more specific details in a single line, hence providing higher level of abstraction on the incident. Also highlights of a football/cricket match can be considered as abstraction of the entire match.



                                                                                    Hence encapsulation is hiding of data to protect its integrity and abstraction is highlighting more important details.



                                                                                    In programming terms we can see that a variable may be enclosed is the scope of a class as private hence preventing it from being accessed directly from outside, this is encapsulation. Whereas a a function may be written in a class to swap two numbers. Now the numbers may be swapped in either by either using a temporary variable or through bit manipulation or using arithmetic operation, but the goal of the user is to receive the numbers swapped irrespective of the method used for swapping, this is abstraction.






                                                                                    share|improve this answer













                                                                                    Encapsulation : Suppose I have some confidential documents, now I hide these documents inside a locker so no one can gain access to them, this is encapsulation.



                                                                                    Abstraction : A huge incident took place which was summarised in the newspaper. Now the newspaper only listed the more important details of the actual incident, this is abstraction. Further the headline of the incident highlights on even more specific details in a single line, hence providing higher level of abstraction on the incident. Also highlights of a football/cricket match can be considered as abstraction of the entire match.



                                                                                    Hence encapsulation is hiding of data to protect its integrity and abstraction is highlighting more important details.



                                                                                    In programming terms we can see that a variable may be enclosed is the scope of a class as private hence preventing it from being accessed directly from outside, this is encapsulation. Whereas a a function may be written in a class to swap two numbers. Now the numbers may be swapped in either by either using a temporary variable or through bit manipulation or using arithmetic operation, but the goal of the user is to receive the numbers swapped irrespective of the method used for swapping, this is abstraction.







                                                                                    share|improve this answer












                                                                                    share|improve this answer



                                                                                    share|improve this answer










                                                                                    answered Oct 9 '17 at 17:36









                                                                                    Advait BandiwadekarAdvait Bandiwadekar

                                                                                    312




                                                                                    312























                                                                                        2














                                                                                        Abstraction: In case of an hardware abstraction layer, you have simple interfaces to trigger the hardware (e.g. turn enginge left/right) without knowing the hardware details behind. So hiding the complexity of the system. It's a simplified view of the real world.



                                                                                        Encapsulation: Hiding of object internals. The object is an abstraction of the real world. But the details of this object (like data structures...) can be hidden via encapsulation.






                                                                                        share|improve this answer




























                                                                                          2














                                                                                          Abstraction: In case of an hardware abstraction layer, you have simple interfaces to trigger the hardware (e.g. turn enginge left/right) without knowing the hardware details behind. So hiding the complexity of the system. It's a simplified view of the real world.



                                                                                          Encapsulation: Hiding of object internals. The object is an abstraction of the real world. But the details of this object (like data structures...) can be hidden via encapsulation.






                                                                                          share|improve this answer


























                                                                                            2












                                                                                            2








                                                                                            2







                                                                                            Abstraction: In case of an hardware abstraction layer, you have simple interfaces to trigger the hardware (e.g. turn enginge left/right) without knowing the hardware details behind. So hiding the complexity of the system. It's a simplified view of the real world.



                                                                                            Encapsulation: Hiding of object internals. The object is an abstraction of the real world. But the details of this object (like data structures...) can be hidden via encapsulation.






                                                                                            share|improve this answer













                                                                                            Abstraction: In case of an hardware abstraction layer, you have simple interfaces to trigger the hardware (e.g. turn enginge left/right) without knowing the hardware details behind. So hiding the complexity of the system. It's a simplified view of the real world.



                                                                                            Encapsulation: Hiding of object internals. The object is an abstraction of the real world. But the details of this object (like data structures...) can be hidden via encapsulation.







                                                                                            share|improve this answer












                                                                                            share|improve this answer



                                                                                            share|improve this answer










                                                                                            answered Jul 30 '14 at 5:48









                                                                                            DevelopmentFunDevelopmentFun

                                                                                            441




                                                                                            441























                                                                                                2














                                                                                                Abstraction refers to the act of representing essential features without including the background details or explanations.



                                                                                                Encapsulation is a technique used for hiding the properties and behaviors of an object and allowing outside access only as appropriate. It prevents other objects from directly altering or accessing the properties or methods of the encapsulated object.



                                                                                                Difference between abstraction and encapsulation



                                                                                                1.Abstraction focuses on the outside view of an object (i.e. the interface) Encapsulation (information hiding) prevents clients from seeing it’s inside view, where the behavior of the abstraction is implemented.



                                                                                                2.Abstraction solves the problem in the design side while Encapsulation is the Implementation.



                                                                                                3.Encapsulation is the deliverable of Abstraction. Encapsulation barely talks about grouping up your abstraction to suit the developer needs.






                                                                                                share|improve this answer




























                                                                                                  2














                                                                                                  Abstraction refers to the act of representing essential features without including the background details or explanations.



                                                                                                  Encapsulation is a technique used for hiding the properties and behaviors of an object and allowing outside access only as appropriate. It prevents other objects from directly altering or accessing the properties or methods of the encapsulated object.



                                                                                                  Difference between abstraction and encapsulation



                                                                                                  1.Abstraction focuses on the outside view of an object (i.e. the interface) Encapsulation (information hiding) prevents clients from seeing it’s inside view, where the behavior of the abstraction is implemented.



                                                                                                  2.Abstraction solves the problem in the design side while Encapsulation is the Implementation.



                                                                                                  3.Encapsulation is the deliverable of Abstraction. Encapsulation barely talks about grouping up your abstraction to suit the developer needs.






                                                                                                  share|improve this answer


























                                                                                                    2












                                                                                                    2








                                                                                                    2







                                                                                                    Abstraction refers to the act of representing essential features without including the background details or explanations.



                                                                                                    Encapsulation is a technique used for hiding the properties and behaviors of an object and allowing outside access only as appropriate. It prevents other objects from directly altering or accessing the properties or methods of the encapsulated object.



                                                                                                    Difference between abstraction and encapsulation



                                                                                                    1.Abstraction focuses on the outside view of an object (i.e. the interface) Encapsulation (information hiding) prevents clients from seeing it’s inside view, where the behavior of the abstraction is implemented.



                                                                                                    2.Abstraction solves the problem in the design side while Encapsulation is the Implementation.



                                                                                                    3.Encapsulation is the deliverable of Abstraction. Encapsulation barely talks about grouping up your abstraction to suit the developer needs.






                                                                                                    share|improve this answer













                                                                                                    Abstraction refers to the act of representing essential features without including the background details or explanations.



                                                                                                    Encapsulation is a technique used for hiding the properties and behaviors of an object and allowing outside access only as appropriate. It prevents other objects from directly altering or accessing the properties or methods of the encapsulated object.



                                                                                                    Difference between abstraction and encapsulation



                                                                                                    1.Abstraction focuses on the outside view of an object (i.e. the interface) Encapsulation (information hiding) prevents clients from seeing it’s inside view, where the behavior of the abstraction is implemented.



                                                                                                    2.Abstraction solves the problem in the design side while Encapsulation is the Implementation.



                                                                                                    3.Encapsulation is the deliverable of Abstraction. Encapsulation barely talks about grouping up your abstraction to suit the developer needs.







                                                                                                    share|improve this answer












                                                                                                    share|improve this answer



                                                                                                    share|improve this answer










                                                                                                    answered Feb 15 '16 at 17:36









                                                                                                    JennyJenny

                                                                                                    211




                                                                                                    211























                                                                                                        2














                                                                                                        ABSTRACTION:"A view of a problem that extracts the essential information
                                                                                                        relevant to a particular purpose and ignores the remainder of
                                                                                                        the information."[IEEE, 1983]



                                                                                                        ENCAPSULATION: "Encapsulation or equivalently information hiding refers to the
                                                                                                        practice of including within an object everything it needs, and
                                                                                                        furthermore doing this in such a way that no other object need ever
                                                                                                        be aware of this internal structure."






                                                                                                        share|improve this answer




























                                                                                                          2














                                                                                                          ABSTRACTION:"A view of a problem that extracts the essential information
                                                                                                          relevant to a particular purpose and ignores the remainder of
                                                                                                          the information."[IEEE, 1983]



                                                                                                          ENCAPSULATION: "Encapsulation or equivalently information hiding refers to the
                                                                                                          practice of including within an object everything it needs, and
                                                                                                          furthermore doing this in such a way that no other object need ever
                                                                                                          be aware of this internal structure."






                                                                                                          share|improve this answer


























                                                                                                            2












                                                                                                            2








                                                                                                            2







                                                                                                            ABSTRACTION:"A view of a problem that extracts the essential information
                                                                                                            relevant to a particular purpose and ignores the remainder of
                                                                                                            the information."[IEEE, 1983]



                                                                                                            ENCAPSULATION: "Encapsulation or equivalently information hiding refers to the
                                                                                                            practice of including within an object everything it needs, and
                                                                                                            furthermore doing this in such a way that no other object need ever
                                                                                                            be aware of this internal structure."






                                                                                                            share|improve this answer













                                                                                                            ABSTRACTION:"A view of a problem that extracts the essential information
                                                                                                            relevant to a particular purpose and ignores the remainder of
                                                                                                            the information."[IEEE, 1983]



                                                                                                            ENCAPSULATION: "Encapsulation or equivalently information hiding refers to the
                                                                                                            practice of including within an object everything it needs, and
                                                                                                            furthermore doing this in such a way that no other object need ever
                                                                                                            be aware of this internal structure."







                                                                                                            share|improve this answer












                                                                                                            share|improve this answer



                                                                                                            share|improve this answer










                                                                                                            answered Jun 1 '16 at 4:13









                                                                                                            user6407581user6407581

                                                                                                            211




                                                                                                            211























                                                                                                                2














                                                                                                                Abstraction is one of the many benefits of Data Encapsulation. We can also say Data Encapsulation is one way to implement Abstraction.






                                                                                                                share|improve this answer






























                                                                                                                  2














                                                                                                                  Abstraction is one of the many benefits of Data Encapsulation. We can also say Data Encapsulation is one way to implement Abstraction.






                                                                                                                  share|improve this answer




























                                                                                                                    2












                                                                                                                    2








                                                                                                                    2







                                                                                                                    Abstraction is one of the many benefits of Data Encapsulation. We can also say Data Encapsulation is one way to implement Abstraction.






                                                                                                                    share|improve this answer















                                                                                                                    Abstraction is one of the many benefits of Data Encapsulation. We can also say Data Encapsulation is one way to implement Abstraction.







                                                                                                                    share|improve this answer














                                                                                                                    share|improve this answer



                                                                                                                    share|improve this answer








                                                                                                                    edited Aug 6 '17 at 4:05

























                                                                                                                    answered Aug 6 '17 at 3:35









                                                                                                                    Vaibhav Ajay GuptaVaibhav Ajay Gupta

                                                                                                                    3811318




                                                                                                                    3811318























                                                                                                                        1














                                                                                                                        My opinion of abstraction is not in the sense of hiding implementation or background details!



                                                                                                                        Abstraction gives us the benefit to deal with a representation of the real world which is easier to handle, has the ability to be reused, could be combined with other components of our more or less complex program package. So we have to find out how we pick a complete peace of the real world, which is complete enough to represent the sense of our algorithm and data. The implementation of the interface may hide the details but this is not part of the work we have to do for abstracting something.



                                                                                                                        For me most important thing for abstraction is:




                                                                                                                        1. reduction of complexity

                                                                                                                        2. reduction of size/quantity

                                                                                                                        3. splitting of non related domains to clear and independent components


                                                                                                                        All this has for me nothing to do with hiding background details!



                                                                                                                        If you think of sorting some data, abstraction can result in:




                                                                                                                        1. a sorting algorithm, which is independent of the data representation

                                                                                                                        2. a compare function, which is independent of data and sort algorithm

                                                                                                                        3. a generic data representation, which is independent of the used algorithms


                                                                                                                        All these has nothing to do with hiding information.






                                                                                                                        share|improve this answer




























                                                                                                                          1














                                                                                                                          My opinion of abstraction is not in the sense of hiding implementation or background details!



                                                                                                                          Abstraction gives us the benefit to deal with a representation of the real world which is easier to handle, has the ability to be reused, could be combined with other components of our more or less complex program package. So we have to find out how we pick a complete peace of the real world, which is complete enough to represent the sense of our algorithm and data. The implementation of the interface may hide the details but this is not part of the work we have to do for abstracting something.



                                                                                                                          For me most important thing for abstraction is:




                                                                                                                          1. reduction of complexity

                                                                                                                          2. reduction of size/quantity

                                                                                                                          3. splitting of non related domains to clear and independent components


                                                                                                                          All this has for me nothing to do with hiding background details!



                                                                                                                          If you think of sorting some data, abstraction can result in:




                                                                                                                          1. a sorting algorithm, which is independent of the data representation

                                                                                                                          2. a compare function, which is independent of data and sort algorithm

                                                                                                                          3. a generic data representation, which is independent of the used algorithms


                                                                                                                          All these has nothing to do with hiding information.






                                                                                                                          share|improve this answer


























                                                                                                                            1












                                                                                                                            1








                                                                                                                            1







                                                                                                                            My opinion of abstraction is not in the sense of hiding implementation or background details!



                                                                                                                            Abstraction gives us the benefit to deal with a representation of the real world which is easier to handle, has the ability to be reused, could be combined with other components of our more or less complex program package. So we have to find out how we pick a complete peace of the real world, which is complete enough to represent the sense of our algorithm and data. The implementation of the interface may hide the details but this is not part of the work we have to do for abstracting something.



                                                                                                                            For me most important thing for abstraction is:




                                                                                                                            1. reduction of complexity

                                                                                                                            2. reduction of size/quantity

                                                                                                                            3. splitting of non related domains to clear and independent components


                                                                                                                            All this has for me nothing to do with hiding background details!



                                                                                                                            If you think of sorting some data, abstraction can result in:




                                                                                                                            1. a sorting algorithm, which is independent of the data representation

                                                                                                                            2. a compare function, which is independent of data and sort algorithm

                                                                                                                            3. a generic data representation, which is independent of the used algorithms


                                                                                                                            All these has nothing to do with hiding information.






                                                                                                                            share|improve this answer













                                                                                                                            My opinion of abstraction is not in the sense of hiding implementation or background details!



                                                                                                                            Abstraction gives us the benefit to deal with a representation of the real world which is easier to handle, has the ability to be reused, could be combined with other components of our more or less complex program package. So we have to find out how we pick a complete peace of the real world, which is complete enough to represent the sense of our algorithm and data. The implementation of the interface may hide the details but this is not part of the work we have to do for abstracting something.



                                                                                                                            For me most important thing for abstraction is:




                                                                                                                            1. reduction of complexity

                                                                                                                            2. reduction of size/quantity

                                                                                                                            3. splitting of non related domains to clear and independent components


                                                                                                                            All this has for me nothing to do with hiding background details!



                                                                                                                            If you think of sorting some data, abstraction can result in:




                                                                                                                            1. a sorting algorithm, which is independent of the data representation

                                                                                                                            2. a compare function, which is independent of data and sort algorithm

                                                                                                                            3. a generic data representation, which is independent of the used algorithms


                                                                                                                            All these has nothing to do with hiding information.







                                                                                                                            share|improve this answer












                                                                                                                            share|improve this answer



                                                                                                                            share|improve this answer










                                                                                                                            answered Jul 30 '14 at 6:10









                                                                                                                            KlausKlaus

                                                                                                                            11k12559




                                                                                                                            11k12559























                                                                                                                                1














                                                                                                                                In my view encapsulation is a thought of programmer to hide the complexity of the program code by using access specifier.

                                                                                                                                Where as Abstraction is separation of method and object according to there function and behavior. For example Car has sheets, wheels, break, headlight.






                                                                                                                                share|improve this answer




























                                                                                                                                  1














                                                                                                                                  In my view encapsulation is a thought of programmer to hide the complexity of the program code by using access specifier.

                                                                                                                                  Where as Abstraction is separation of method and object according to there function and behavior. For example Car has sheets, wheels, break, headlight.






                                                                                                                                  share|improve this answer


























                                                                                                                                    1












                                                                                                                                    1








                                                                                                                                    1







                                                                                                                                    In my view encapsulation is a thought of programmer to hide the complexity of the program code by using access specifier.

                                                                                                                                    Where as Abstraction is separation of method and object according to there function and behavior. For example Car has sheets, wheels, break, headlight.






                                                                                                                                    share|improve this answer













                                                                                                                                    In my view encapsulation is a thought of programmer to hide the complexity of the program code by using access specifier.

                                                                                                                                    Where as Abstraction is separation of method and object according to there function and behavior. For example Car has sheets, wheels, break, headlight.







                                                                                                                                    share|improve this answer












                                                                                                                                    share|improve this answer



                                                                                                                                    share|improve this answer










                                                                                                                                    answered Feb 26 '16 at 11:33









                                                                                                                                    Priyanjan kumarPriyanjan kumar

                                                                                                                                    111




                                                                                                                                    111























                                                                                                                                        1














                                                                                                                                        Developer A, who is inherently utilising the concept of abstraction will use a module/library function/widget, concerned only with what it does (and what it will be used for) but not how it does it. The interface of that module/library function/widget (the 'levers' the Developer A is allowed to pull/push) is the personification of that abstraction.



                                                                                                                                        Developer B, who is seeking to create such a module/function/widget will utilise the concept of encapsulation to ensure Developer A (and any other developer who uses the widget) can take advantage of the resulting abstraction. Developer B is most certainly concerned with how the widget does what it does.



                                                                                                                                        TLDR;




                                                                                                                                        • Abstraction - I care about what something does, but not how it does it.

                                                                                                                                        • Encapsulation - I care about how something does what it does such that others only need to care about what it does.


                                                                                                                                        (As a loose generalisation, to abstract something, you must encapsulate something else. And by encapsulating something, you have created an abstraction.)






                                                                                                                                        share|improve this answer






























                                                                                                                                          1














                                                                                                                                          Developer A, who is inherently utilising the concept of abstraction will use a module/library function/widget, concerned only with what it does (and what it will be used for) but not how it does it. The interface of that module/library function/widget (the 'levers' the Developer A is allowed to pull/push) is the personification of that abstraction.



                                                                                                                                          Developer B, who is seeking to create such a module/function/widget will utilise the concept of encapsulation to ensure Developer A (and any other developer who uses the widget) can take advantage of the resulting abstraction. Developer B is most certainly concerned with how the widget does what it does.



                                                                                                                                          TLDR;




                                                                                                                                          • Abstraction - I care about what something does, but not how it does it.

                                                                                                                                          • Encapsulation - I care about how something does what it does such that others only need to care about what it does.


                                                                                                                                          (As a loose generalisation, to abstract something, you must encapsulate something else. And by encapsulating something, you have created an abstraction.)






                                                                                                                                          share|improve this answer




























                                                                                                                                            1












                                                                                                                                            1








                                                                                                                                            1







                                                                                                                                            Developer A, who is inherently utilising the concept of abstraction will use a module/library function/widget, concerned only with what it does (and what it will be used for) but not how it does it. The interface of that module/library function/widget (the 'levers' the Developer A is allowed to pull/push) is the personification of that abstraction.



                                                                                                                                            Developer B, who is seeking to create such a module/function/widget will utilise the concept of encapsulation to ensure Developer A (and any other developer who uses the widget) can take advantage of the resulting abstraction. Developer B is most certainly concerned with how the widget does what it does.



                                                                                                                                            TLDR;




                                                                                                                                            • Abstraction - I care about what something does, but not how it does it.

                                                                                                                                            • Encapsulation - I care about how something does what it does such that others only need to care about what it does.


                                                                                                                                            (As a loose generalisation, to abstract something, you must encapsulate something else. And by encapsulating something, you have created an abstraction.)






                                                                                                                                            share|improve this answer















                                                                                                                                            Developer A, who is inherently utilising the concept of abstraction will use a module/library function/widget, concerned only with what it does (and what it will be used for) but not how it does it. The interface of that module/library function/widget (the 'levers' the Developer A is allowed to pull/push) is the personification of that abstraction.



                                                                                                                                            Developer B, who is seeking to create such a module/function/widget will utilise the concept of encapsulation to ensure Developer A (and any other developer who uses the widget) can take advantage of the resulting abstraction. Developer B is most certainly concerned with how the widget does what it does.



                                                                                                                                            TLDR;




                                                                                                                                            • Abstraction - I care about what something does, but not how it does it.

                                                                                                                                            • Encapsulation - I care about how something does what it does such that others only need to care about what it does.


                                                                                                                                            (As a loose generalisation, to abstract something, you must encapsulate something else. And by encapsulating something, you have created an abstraction.)







                                                                                                                                            share|improve this answer














                                                                                                                                            share|improve this answer



                                                                                                                                            share|improve this answer








                                                                                                                                            edited Aug 8 '16 at 5:13

























                                                                                                                                            answered Aug 8 '16 at 4:58









                                                                                                                                            JulieJulie

                                                                                                                                            113




                                                                                                                                            113























                                                                                                                                                0














                                                                                                                                                The essential thing about abstraction is that client code operates in terms of a different logical/abstract model. That different model may be more or less complex than the implementation happens to be in any given client usage.



                                                                                                                                                For example, "Iterator" abstracts (aka generalises) sequenced traversal of 0 or more values - in C++ it manifests as begin(), */-> (dereferencing), end(), pre/post ++ and possibly --, then there's +, +=, , std::advance etc.. That's a lot of baggage if the client could say increment a size_t along an array anyway. The essential thing is that the abstraction allows client code that needs to perform such a traversal to be decoupled from the exact nature of the "container" or data source providing the elements. Iteration is a higher-level notion that sometimes restricts the way the traversal is performed (e.g. a forward iterator can only advance an element at a time), but the data can then be provided by a larger set of sources (e.g. from a keyboard where there's not even a "container" in the sense of concurrently stored values). The client code can generally switch to another data source abstracted through its own iterators with minimal or even no changes, and even polymorphically to other data types - either implicitly or explicitly using something like std::iterator_traits<Iterator>::value_type available.



                                                                                                                                                This is quite a different thing from encapsulation, which is the practice of making some data or functions less accessible, such that you know they're only used indirectly as a result of operations on the public interface. Encapsulation is an essential tool for maintaining invariants on an object, which means things you want to keep true after every public operation - if client code could just reach in and modify your object then you can't enforce any invariants. For example, a class might wrap a string, ensuring that after any operation any lowercase letters were changed to upper case, but if the client code can reach in and put a lowercase letter into the string without the involvement of the class's member functions, then the invariant can't be enforced.



                                                                                                                                                To further highlight the difference, consider say a private std::vector<Timing_Sample> data member that's incidentally populated by operations on the containing object, with a report dumped out on destruction. With the data and destructor side effect not interacting with the object's client code in any way, and the operations on the object not intentionally controlling the time-keeping behaviour, there's no abstraction of that time reporting functionality but there is encapsulation. An example of abstraction would be to move the timing code into a separate class that might encapsulate the vector (make it private) and just provide a interface like add(const Timing_Sample&) and report(std::ostream&) - the necessary logical/abstract operations involved with using such instrumentation, with the highly desirable side effect that the abstracted code will often be reusable for other client code with similar functional needs.






                                                                                                                                                share|improve this answer






























                                                                                                                                                  0














                                                                                                                                                  The essential thing about abstraction is that client code operates in terms of a different logical/abstract model. That different model may be more or less complex than the implementation happens to be in any given client usage.



                                                                                                                                                  For example, "Iterator" abstracts (aka generalises) sequenced traversal of 0 or more values - in C++ it manifests as begin(), */-> (dereferencing), end(), pre/post ++ and possibly --, then there's +, +=, , std::advance etc.. That's a lot of baggage if the client could say increment a size_t along an array anyway. The essential thing is that the abstraction allows client code that needs to perform such a traversal to be decoupled from the exact nature of the "container" or data source providing the elements. Iteration is a higher-level notion that sometimes restricts the way the traversal is performed (e.g. a forward iterator can only advance an element at a time), but the data can then be provided by a larger set of sources (e.g. from a keyboard where there's not even a "container" in the sense of concurrently stored values). The client code can generally switch to another data source abstracted through its own iterators with minimal or even no changes, and even polymorphically to other data types - either implicitly or explicitly using something like std::iterator_traits<Iterator>::value_type available.



                                                                                                                                                  This is quite a different thing from encapsulation, which is the practice of making some data or functions less accessible, such that you know they're only used indirectly as a result of operations on the public interface. Encapsulation is an essential tool for maintaining invariants on an object, which means things you want to keep true after every public operation - if client code could just reach in and modify your object then you can't enforce any invariants. For example, a class might wrap a string, ensuring that after any operation any lowercase letters were changed to upper case, but if the client code can reach in and put a lowercase letter into the string without the involvement of the class's member functions, then the invariant can't be enforced.



                                                                                                                                                  To further highlight the difference, consider say a private std::vector<Timing_Sample> data member that's incidentally populated by operations on the containing object, with a report dumped out on destruction. With the data and destructor side effect not interacting with the object's client code in any way, and the operations on the object not intentionally controlling the time-keeping behaviour, there's no abstraction of that time reporting functionality but there is encapsulation. An example of abstraction would be to move the timing code into a separate class that might encapsulate the vector (make it private) and just provide a interface like add(const Timing_Sample&) and report(std::ostream&) - the necessary logical/abstract operations involved with using such instrumentation, with the highly desirable side effect that the abstracted code will often be reusable for other client code with similar functional needs.






                                                                                                                                                  share|improve this answer




























                                                                                                                                                    0












                                                                                                                                                    0








                                                                                                                                                    0







                                                                                                                                                    The essential thing about abstraction is that client code operates in terms of a different logical/abstract model. That different model may be more or less complex than the implementation happens to be in any given client usage.



                                                                                                                                                    For example, "Iterator" abstracts (aka generalises) sequenced traversal of 0 or more values - in C++ it manifests as begin(), */-> (dereferencing), end(), pre/post ++ and possibly --, then there's +, +=, , std::advance etc.. That's a lot of baggage if the client could say increment a size_t along an array anyway. The essential thing is that the abstraction allows client code that needs to perform such a traversal to be decoupled from the exact nature of the "container" or data source providing the elements. Iteration is a higher-level notion that sometimes restricts the way the traversal is performed (e.g. a forward iterator can only advance an element at a time), but the data can then be provided by a larger set of sources (e.g. from a keyboard where there's not even a "container" in the sense of concurrently stored values). The client code can generally switch to another data source abstracted through its own iterators with minimal or even no changes, and even polymorphically to other data types - either implicitly or explicitly using something like std::iterator_traits<Iterator>::value_type available.



                                                                                                                                                    This is quite a different thing from encapsulation, which is the practice of making some data or functions less accessible, such that you know they're only used indirectly as a result of operations on the public interface. Encapsulation is an essential tool for maintaining invariants on an object, which means things you want to keep true after every public operation - if client code could just reach in and modify your object then you can't enforce any invariants. For example, a class might wrap a string, ensuring that after any operation any lowercase letters were changed to upper case, but if the client code can reach in and put a lowercase letter into the string without the involvement of the class's member functions, then the invariant can't be enforced.



                                                                                                                                                    To further highlight the difference, consider say a private std::vector<Timing_Sample> data member that's incidentally populated by operations on the containing object, with a report dumped out on destruction. With the data and destructor side effect not interacting with the object's client code in any way, and the operations on the object not intentionally controlling the time-keeping behaviour, there's no abstraction of that time reporting functionality but there is encapsulation. An example of abstraction would be to move the timing code into a separate class that might encapsulate the vector (make it private) and just provide a interface like add(const Timing_Sample&) and report(std::ostream&) - the necessary logical/abstract operations involved with using such instrumentation, with the highly desirable side effect that the abstracted code will often be reusable for other client code with similar functional needs.






                                                                                                                                                    share|improve this answer















                                                                                                                                                    The essential thing about abstraction is that client code operates in terms of a different logical/abstract model. That different model may be more or less complex than the implementation happens to be in any given client usage.



                                                                                                                                                    For example, "Iterator" abstracts (aka generalises) sequenced traversal of 0 or more values - in C++ it manifests as begin(), */-> (dereferencing), end(), pre/post ++ and possibly --, then there's +, +=, , std::advance etc.. That's a lot of baggage if the client could say increment a size_t along an array anyway. The essential thing is that the abstraction allows client code that needs to perform such a traversal to be decoupled from the exact nature of the "container" or data source providing the elements. Iteration is a higher-level notion that sometimes restricts the way the traversal is performed (e.g. a forward iterator can only advance an element at a time), but the data can then be provided by a larger set of sources (e.g. from a keyboard where there's not even a "container" in the sense of concurrently stored values). The client code can generally switch to another data source abstracted through its own iterators with minimal or even no changes, and even polymorphically to other data types - either implicitly or explicitly using something like std::iterator_traits<Iterator>::value_type available.



                                                                                                                                                    This is quite a different thing from encapsulation, which is the practice of making some data or functions less accessible, such that you know they're only used indirectly as a result of operations on the public interface. Encapsulation is an essential tool for maintaining invariants on an object, which means things you want to keep true after every public operation - if client code could just reach in and modify your object then you can't enforce any invariants. For example, a class might wrap a string, ensuring that after any operation any lowercase letters were changed to upper case, but if the client code can reach in and put a lowercase letter into the string without the involvement of the class's member functions, then the invariant can't be enforced.



                                                                                                                                                    To further highlight the difference, consider say a private std::vector<Timing_Sample> data member that's incidentally populated by operations on the containing object, with a report dumped out on destruction. With the data and destructor side effect not interacting with the object's client code in any way, and the operations on the object not intentionally controlling the time-keeping behaviour, there's no abstraction of that time reporting functionality but there is encapsulation. An example of abstraction would be to move the timing code into a separate class that might encapsulate the vector (make it private) and just provide a interface like add(const Timing_Sample&) and report(std::ostream&) - the necessary logical/abstract operations involved with using such instrumentation, with the highly desirable side effect that the abstracted code will often be reusable for other client code with similar functional needs.







                                                                                                                                                    share|improve this answer














                                                                                                                                                    share|improve this answer



                                                                                                                                                    share|improve this answer








                                                                                                                                                    edited Jul 30 '14 at 6:15

























                                                                                                                                                    answered Jul 30 '14 at 6:09









                                                                                                                                                    Tony DelroyTony Delroy

                                                                                                                                                    83.7k10128190




                                                                                                                                                    83.7k10128190























                                                                                                                                                        0














                                                                                                                                                        In my opinion, both terms are related in some sense and sort of mixed into each other. "Encapsulation" provides a way to grouping related fields, methods in a class (or module) to wrap the related things together. As of that time, it provides data hiding in two ways;





                                                                                                                                                        1. Through access modifiers.



                                                                                                                                                          Purely for hiding state of the class/object.




                                                                                                                                                        2. Abstracting some functionalities.



                                                                                                                                                          a. Through interfaces/abstract classes, complex logic inside the encapsulated class or module can be abstracted/generalized to be used by outside.



                                                                                                                                                          b. Through function signatures. Yes, even function signatures example of abstracting. Because callers only knows the signature and parameters (if any) and know nothing about how the function is carried out. It only cares of returned value.




                                                                                                                                                        Likewise, "Abstraction" might be think of a way of encapsulation in terms of grouping/wrapping the behaviour into an interface (or abstract class or might be even a normal class ).






                                                                                                                                                        share|improve this answer




























                                                                                                                                                          0














                                                                                                                                                          In my opinion, both terms are related in some sense and sort of mixed into each other. "Encapsulation" provides a way to grouping related fields, methods in a class (or module) to wrap the related things together. As of that time, it provides data hiding in two ways;





                                                                                                                                                          1. Through access modifiers.



                                                                                                                                                            Purely for hiding state of the class/object.




                                                                                                                                                          2. Abstracting some functionalities.



                                                                                                                                                            a. Through interfaces/abstract classes, complex logic inside the encapsulated class or module can be abstracted/generalized to be used by outside.



                                                                                                                                                            b. Through function signatures. Yes, even function signatures example of abstracting. Because callers only knows the signature and parameters (if any) and know nothing about how the function is carried out. It only cares of returned value.




                                                                                                                                                          Likewise, "Abstraction" might be think of a way of encapsulation in terms of grouping/wrapping the behaviour into an interface (or abstract class or might be even a normal class ).






                                                                                                                                                          share|improve this answer


























                                                                                                                                                            0












                                                                                                                                                            0








                                                                                                                                                            0







                                                                                                                                                            In my opinion, both terms are related in some sense and sort of mixed into each other. "Encapsulation" provides a way to grouping related fields, methods in a class (or module) to wrap the related things together. As of that time, it provides data hiding in two ways;





                                                                                                                                                            1. Through access modifiers.



                                                                                                                                                              Purely for hiding state of the class/object.




                                                                                                                                                            2. Abstracting some functionalities.



                                                                                                                                                              a. Through interfaces/abstract classes, complex logic inside the encapsulated class or module can be abstracted/generalized to be used by outside.



                                                                                                                                                              b. Through function signatures. Yes, even function signatures example of abstracting. Because callers only knows the signature and parameters (if any) and know nothing about how the function is carried out. It only cares of returned value.




                                                                                                                                                            Likewise, "Abstraction" might be think of a way of encapsulation in terms of grouping/wrapping the behaviour into an interface (or abstract class or might be even a normal class ).






                                                                                                                                                            share|improve this answer













                                                                                                                                                            In my opinion, both terms are related in some sense and sort of mixed into each other. "Encapsulation" provides a way to grouping related fields, methods in a class (or module) to wrap the related things together. As of that time, it provides data hiding in two ways;





                                                                                                                                                            1. Through access modifiers.



                                                                                                                                                              Purely for hiding state of the class/object.




                                                                                                                                                            2. Abstracting some functionalities.



                                                                                                                                                              a. Through interfaces/abstract classes, complex logic inside the encapsulated class or module can be abstracted/generalized to be used by outside.



                                                                                                                                                              b. Through function signatures. Yes, even function signatures example of abstracting. Because callers only knows the signature and parameters (if any) and know nothing about how the function is carried out. It only cares of returned value.




                                                                                                                                                            Likewise, "Abstraction" might be think of a way of encapsulation in terms of grouping/wrapping the behaviour into an interface (or abstract class or might be even a normal class ).







                                                                                                                                                            share|improve this answer












                                                                                                                                                            share|improve this answer



                                                                                                                                                            share|improve this answer










                                                                                                                                                            answered Jan 21 '16 at 9:39









                                                                                                                                                            zgulserzgulser

                                                                                                                                                            99711122




                                                                                                                                                            99711122























                                                                                                                                                                0














                                                                                                                                                                As far as iOS is concerned, it can be said that Objective C files (i.e. .h and .m) use abstraction as well as encapsulation.



                                                                                                                                                                Abstraction



                                                                                                                                                                Header file (.h) only exposes the functions and public members to outside world. No one knows how they are used unless they have the implementation file with them. It is the .m file that holds all the usage and implementation logic with it self. "Implementation remains unexposed".



                                                                                                                                                                Encapsulation



                                                                                                                                                                The property (@property) encapsulates the memory management attribute (atomic, strong, retain, weak) of an iVar.






                                                                                                                                                                share|improve this answer




























                                                                                                                                                                  0














                                                                                                                                                                  As far as iOS is concerned, it can be said that Objective C files (i.e. .h and .m) use abstraction as well as encapsulation.



                                                                                                                                                                  Abstraction



                                                                                                                                                                  Header file (.h) only exposes the functions and public members to outside world. No one knows how they are used unless they have the implementation file with them. It is the .m file that holds all the usage and implementation logic with it self. "Implementation remains unexposed".



                                                                                                                                                                  Encapsulation



                                                                                                                                                                  The property (@property) encapsulates the memory management attribute (atomic, strong, retain, weak) of an iVar.






                                                                                                                                                                  share|improve this answer


























                                                                                                                                                                    0












                                                                                                                                                                    0








                                                                                                                                                                    0







                                                                                                                                                                    As far as iOS is concerned, it can be said that Objective C files (i.e. .h and .m) use abstraction as well as encapsulation.



                                                                                                                                                                    Abstraction



                                                                                                                                                                    Header file (.h) only exposes the functions and public members to outside world. No one knows how they are used unless they have the implementation file with them. It is the .m file that holds all the usage and implementation logic with it self. "Implementation remains unexposed".



                                                                                                                                                                    Encapsulation



                                                                                                                                                                    The property (@property) encapsulates the memory management attribute (atomic, strong, retain, weak) of an iVar.






                                                                                                                                                                    share|improve this answer













                                                                                                                                                                    As far as iOS is concerned, it can be said that Objective C files (i.e. .h and .m) use abstraction as well as encapsulation.



                                                                                                                                                                    Abstraction



                                                                                                                                                                    Header file (.h) only exposes the functions and public members to outside world. No one knows how they are used unless they have the implementation file with them. It is the .m file that holds all the usage and implementation logic with it self. "Implementation remains unexposed".



                                                                                                                                                                    Encapsulation



                                                                                                                                                                    The property (@property) encapsulates the memory management attribute (atomic, strong, retain, weak) of an iVar.







                                                                                                                                                                    share|improve this answer












                                                                                                                                                                    share|improve this answer



                                                                                                                                                                    share|improve this answer










                                                                                                                                                                    answered Jul 6 '16 at 19:50









                                                                                                                                                                    Shobhit CShobhit C

                                                                                                                                                                    400513




                                                                                                                                                                    400513























                                                                                                                                                                        0














                                                                                                                                                                        A program has mainly two parts : DATA and PROCESS. abstraction hides data in process so that no one can change. Encapsulation hides data everywhere so that it cannot be displayed.
                                                                                                                                                                        I hope this clarifies your doubt.






                                                                                                                                                                        share|improve this answer




























                                                                                                                                                                          0














                                                                                                                                                                          A program has mainly two parts : DATA and PROCESS. abstraction hides data in process so that no one can change. Encapsulation hides data everywhere so that it cannot be displayed.
                                                                                                                                                                          I hope this clarifies your doubt.






                                                                                                                                                                          share|improve this answer


























                                                                                                                                                                            0












                                                                                                                                                                            0








                                                                                                                                                                            0







                                                                                                                                                                            A program has mainly two parts : DATA and PROCESS. abstraction hides data in process so that no one can change. Encapsulation hides data everywhere so that it cannot be displayed.
                                                                                                                                                                            I hope this clarifies your doubt.






                                                                                                                                                                            share|improve this answer













                                                                                                                                                                            A program has mainly two parts : DATA and PROCESS. abstraction hides data in process so that no one can change. Encapsulation hides data everywhere so that it cannot be displayed.
                                                                                                                                                                            I hope this clarifies your doubt.







                                                                                                                                                                            share|improve this answer












                                                                                                                                                                            share|improve this answer



                                                                                                                                                                            share|improve this answer










                                                                                                                                                                            answered Aug 27 '16 at 5:06









                                                                                                                                                                            Dhruvin SoniDhruvin Soni

                                                                                                                                                                            11




                                                                                                                                                                            11























                                                                                                                                                                                0














                                                                                                                                                                                Encapsulation is used for 2 main reasons:



                                                                                                                                                                                1.) Data hiding & protecting (the user of your class can't modify the data except through your provided methods).



                                                                                                                                                                                2.) Combining the data and methods used to manipulate the data together into one entity (capsule).
                                                                                                                                                                                I think that the second reason is the answer your interviewer wanted to hear.



                                                                                                                                                                                On the other hand, abstraction is needed to expose only the needed information to the user, and hiding unneeded details (for example, hiding the implementation of methods, so that the user is not affected if the implementation is changed).






                                                                                                                                                                                share|improve this answer




























                                                                                                                                                                                  0














                                                                                                                                                                                  Encapsulation is used for 2 main reasons:



                                                                                                                                                                                  1.) Data hiding & protecting (the user of your class can't modify the data except through your provided methods).



                                                                                                                                                                                  2.) Combining the data and methods used to manipulate the data together into one entity (capsule).
                                                                                                                                                                                  I think that the second reason is the answer your interviewer wanted to hear.



                                                                                                                                                                                  On the other hand, abstraction is needed to expose only the needed information to the user, and hiding unneeded details (for example, hiding the implementation of methods, so that the user is not affected if the implementation is changed).






                                                                                                                                                                                  share|improve this answer


























                                                                                                                                                                                    0












                                                                                                                                                                                    0








                                                                                                                                                                                    0







                                                                                                                                                                                    Encapsulation is used for 2 main reasons:



                                                                                                                                                                                    1.) Data hiding & protecting (the user of your class can't modify the data except through your provided methods).



                                                                                                                                                                                    2.) Combining the data and methods used to manipulate the data together into one entity (capsule).
                                                                                                                                                                                    I think that the second reason is the answer your interviewer wanted to hear.



                                                                                                                                                                                    On the other hand, abstraction is needed to expose only the needed information to the user, and hiding unneeded details (for example, hiding the implementation of methods, so that the user is not affected if the implementation is changed).






                                                                                                                                                                                    share|improve this answer













                                                                                                                                                                                    Encapsulation is used for 2 main reasons:



                                                                                                                                                                                    1.) Data hiding & protecting (the user of your class can't modify the data except through your provided methods).



                                                                                                                                                                                    2.) Combining the data and methods used to manipulate the data together into one entity (capsule).
                                                                                                                                                                                    I think that the second reason is the answer your interviewer wanted to hear.



                                                                                                                                                                                    On the other hand, abstraction is needed to expose only the needed information to the user, and hiding unneeded details (for example, hiding the implementation of methods, so that the user is not affected if the implementation is changed).







                                                                                                                                                                                    share|improve this answer












                                                                                                                                                                                    share|improve this answer



                                                                                                                                                                                    share|improve this answer










                                                                                                                                                                                    answered Jun 27 '17 at 12:46









                                                                                                                                                                                    Ramy SamehRamy Sameh

                                                                                                                                                                                    7319




                                                                                                                                                                                    7319























                                                                                                                                                                                        0














                                                                                                                                                                                        Abstraction: Hiding the data.
                                                                                                                                                                                        Encapsulation: Binding the data.






                                                                                                                                                                                        share|improve this answer




























                                                                                                                                                                                          0














                                                                                                                                                                                          Abstraction: Hiding the data.
                                                                                                                                                                                          Encapsulation: Binding the data.






                                                                                                                                                                                          share|improve this answer


























                                                                                                                                                                                            0












                                                                                                                                                                                            0








                                                                                                                                                                                            0







                                                                                                                                                                                            Abstraction: Hiding the data.
                                                                                                                                                                                            Encapsulation: Binding the data.






                                                                                                                                                                                            share|improve this answer













                                                                                                                                                                                            Abstraction: Hiding the data.
                                                                                                                                                                                            Encapsulation: Binding the data.







                                                                                                                                                                                            share|improve this answer












                                                                                                                                                                                            share|improve this answer



                                                                                                                                                                                            share|improve this answer










                                                                                                                                                                                            answered Dec 31 '18 at 12:34









                                                                                                                                                                                            ShubhamWanneShubhamWanne

                                                                                                                                                                                            162




                                                                                                                                                                                            162






























                                                                                                                                                                                                draft saved

                                                                                                                                                                                                draft discarded




















































                                                                                                                                                                                                Thanks for contributing an answer to Stack Overflow!


                                                                                                                                                                                                • Please be sure to answer the question. Provide details and share your research!

                                                                                                                                                                                                But avoid



                                                                                                                                                                                                • Asking for help, clarification, or responding to other answers.

                                                                                                                                                                                                • Making statements based on opinion; back them up with references or personal experience.


                                                                                                                                                                                                To learn more, see our tips on writing great answers.




                                                                                                                                                                                                draft saved


                                                                                                                                                                                                draft discarded














                                                                                                                                                                                                StackExchange.ready(
                                                                                                                                                                                                function () {
                                                                                                                                                                                                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f25029465%2fwhats-the-difference-between-abstraction-and-encapsulation%23new-answer', 'question_page');
                                                                                                                                                                                                }
                                                                                                                                                                                                );

                                                                                                                                                                                                Post as a guest















                                                                                                                                                                                                Required, but never shown





















































                                                                                                                                                                                                Required, but never shown














                                                                                                                                                                                                Required, but never shown












                                                                                                                                                                                                Required, but never shown







                                                                                                                                                                                                Required, but never shown

































                                                                                                                                                                                                Required, but never shown














                                                                                                                                                                                                Required, but never shown












                                                                                                                                                                                                Required, but never shown







                                                                                                                                                                                                Required, but never shown







                                                                                                                                                                                                Popular posts from this blog

                                                                                                                                                                                                Monofisismo

                                                                                                                                                                                                Angular Downloading a file using contenturl with Basic Authentication

                                                                                                                                                                                                Olmecas